tag:crieit.net,2005:https://crieit.net/tags/SSL%E8%A8%BC%E6%98%8E%E6%9B%B8/feed 「SSL証明書」の記事 - Crieit Crieitでタグ「SSL証明書」に投稿された最近の記事 2022-02-25T22:51:29+09:00 https://crieit.net/tags/SSL%E8%A8%BC%E6%98%8E%E6%9B%B8/feed tag:crieit.net,2005:PublicArticle/18126 2022-02-25T22:51:29+09:00 2022-02-25T22:51:29+09:00 https://crieit.net/posts/judge-category-of-ssl-certificate-on-browser-note-20220225 ブラウザで任意のSSL証明書がドメイン認証かどうか判別する (DV証明書, OV証明書, EV証明書) <p>ブラウザで任意のSSL証明書がドメイン認証かどうか判別する方法についてメモ。</p> <h2 id="確認方法"><a href="#%E7%A2%BA%E8%AA%8D%E6%96%B9%E6%B3%95">確認方法</a></h2> <p>今回は Google Chrome (98.0.4758.102) で確認。手順としては次の通り。</p> <ol> <li>朝日カーメンテナンス様HPを開く</li> <li>URLバー横の南京錠🔓のアイコンをクリック</li> <li>「この接続は保護されています >」をクリック</li> <li>「証明書は有効です ↗」をクリック</li> <li>証明書ダイアログの「詳細」タブをクリック</li> <li>「サブジェクト」をクリック</li> </ol> <p>ここで「サブジェクト」の内容が <code>CN = www.example.jp</code> のように CN しか存在しなければドメイン認証(DV証明書)。</p> <p>逆にドメイン認証ではないパターンとして、例えば IPA(<code>https://www.ipa.go.jp</code>) は</p> <pre><code>CN = www.ipa.go.jp # 略 O = Information-technology Promotion Agency, Japan L = Bunkyo S = Tokyo C = JP </code></pre> <p>と CN 以外のプロパティも表示されます。</p> <p>DV証明書はドメイン(コモンネーム=CN)しか確認しないことに対して、 IPA は組織の実在確認を行うEV証明書のため。</p> <p>そのため、 Organization(組織)は <code>Information-technology Promotion Agency, Japan</code> 、Location は <code>Bunkyo</code> といったプロパティが付随しています。</p> <p>この差により「DV証明書かそうでないか」という判別は付く、という寸法です。</p> <h2 id="備考"><a href="#%E5%82%99%E8%80%83">備考</a></h2> <p>ただしこの方法は「DV証明書」と「それ以外(OV証明書、EV証明書)」を見分けることはできますが、「OV証明書」と「EV証明書」を見分けることはできない模様。</p> <p>一部のブラウザではEV証明書ならばURLの横に組織名が表示されるのでそこで「OV証明書」と「EV証明書」を見分けることができそうですが、 Chrome では既に組織名を表示しなくなって久しいため、 Chrome で判別することは難しいと思われます。</p> <p>また、ここまで書いておいて何ですが、手っ取り早く判別するならばWeb上のチェッカーを使用した方が早い気がします。</p> <ul> <li><a target="_blank" rel="nofollow noopener" href="https://ssltools.digicert.com/checker/views/checkInstallation.jsp">Check Website Security | DigiCert SSLTools</a></li> </ul> <h2 id="参考"><a href="#%E5%8F%82%E8%80%83">参考</a></h2> <ul> <li><a target="_blank" rel="nofollow noopener" href="https://ssltools.digicert.com/checker/views/checkInstallation.jsp">Check Website Security | DigiCert SSLTools</a></li> <li><a target="_blank" rel="nofollow noopener" href="https://qiita.com/testnin2/items/51697ad87f896f154a80">DV証明書\/OV証明書\/EV証明書の確認方法 - Qiita</a></li> <li><a target="_blank" rel="nofollow noopener" href="https://www.antiphishing.jp/news/info/_ssl_20191021.html">フィッシング対策協議会 Council of Anti-Phishing Japan | ニュース | 協議会からのお知らせ | [更新] 各ブラウザによる SSL \/ TLS サーバ証明書の表示の違い (2019\/10\/21)</a></li> <li><a target="_blank" rel="nofollow noopener" href="https://www.idcf.jp/rentalserver/option/ssl/appearance.html">SSLサーバー証明書 各証明書の見え方|Zenlogic - 株式会社IDCフロンティアのレンタルサーバー</a></li> <li><a target="_blank" rel="nofollow noopener" href="https://rainbow-engine.com/sslcert-ev-ov-dv-diff/">SSL証明書のEV・OV・DVの違いとブラウザでの見え方について – Rainbow Engine</a></li> </ul> arm-band tag:crieit.net,2005:PublicArticle/17932 2022-01-12T00:06:20+09:00 2022-01-12T00:06:20+09:00 https://crieit.net/posts/centos-onelinear-ternary-and-compoare-operator-20220112 CentOS の bash で比較演算と三項演算子的な処理を使って変数に代入する値を分岐するワンライナー <p><a href="https://crieit.net/posts/diverting-date-as-args-in-dockerfile-20211230">Dockerfile 内でコンテナの時刻を変数として流用し、年に対応した rpmパッケージ の GPG署名 をインストールする</a>で試験した内容の続きとなります。</p> <ul> <li><code>http://rpms.famillecollet.com/RPM-GPG-KEY-remi2021</code>: OK</li> <li><code>http://rpms.famillecollet.com/RPM-GPG-KEY-remi2022</code>: Not Found.</li> </ul> <p>remiリポジトリのGPG署名が2022年版が存在しないので、条件分岐で2021を最大値とするように処理を書いてみました。</p> <h2 id="検証"><a href="#%E6%A4%9C%E8%A8%BC">検証</a></h2> <pre><code class="bash"># date 2022年 1月 11日 火曜日 20:42:53 JST </code></pre> <p>今回の検証環境はこのような表示がされる CentOS の日本語版の環境。</p> <pre><code class="bash"># NOWYEAR=$(sudo date | sudo awk 'END{print $1}' | sudo sed -e 's/年//g') && [ ${NOWYEAR} -gt 2021 ] && ALTERYEAR=2021 || ALTERYEAR=${NOWYEAR} && echo ${ALTERYEAR} 2021 </code></pre> <p>早速完成したワンライナーですが、このようになりました。</p> <h2 id="説明"><a href="#%E8%AA%AC%E6%98%8E">説明</a></h2> <p>わりと複雑になってしまったので順番に読んでいきます。</p> <pre><code class="bash">NOWYEAR=$(sudo date | sudo awk 'END{print $1}' | sudo sed -e 's/年//g') \ # date コマンドの結果から、 awk でスペース区切り1つ目の値(2022年) を抽出し、 `sed -e` で`年`を落とす。結果、`2022`が得られる && [ ${NOWYEAR} -gt 2021 ] && ALTERYEAR=2021 || ALTERYEAR=${NOWYEAR} \ # 三項演算子的な処理。 {コマンドとして実行可能な式} && {前述式が true の場合の処理} || {前述式が false の場合の処理} 。今回は得られた現在の年が2021年以降ならば2021を変数に代入、そうでなければ現在の年を変数代入 && echo ${ALTERYEAR} # 上の三項演算子的な処理で代入された変数の値を echo </code></pre> <p>こんな感じです。</p> <pre><code class="dockerfile">RUN MELUSINE=$(sudo date | sudo awk 'END{print $6}') \ && [ ${NOWYEAR} -gt 2021 ] && ALTERYEAR=2021 || ALTERYEAR=${NOWYEAR} \ && rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-8.rpm \ && rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi${ALTERYEAR} </code></pre> <p>今回はこんな感じで <code>http://rpms.famillecollet.com/RPM-GPG-KEY-remi2021</code> か、 <code>http://rpms.famillecollet.com/RPM-GPG-KEY-remi{2020以下}</code> かを読み込む分岐に。</p> <h2 id="参考"><a href="#%E5%8F%82%E8%80%83">参考</a></h2> <ul> <li><a target="_blank" rel="nofollow noopener" href="https://www.pmi-sfbac.org/arithmetic-comparison/">【Shellスクリプト】演算子「算術演算子」「比較演算子」について! | Beエンジニア</a></li> <li><a target="_blank" rel="nofollow noopener" href="https://eng-entrance.com/linux-shellscript-replacement">【Linux】シェルスクリプトによる文字列処理:置換や削除をする方法</a></li> </ul> arm-band tag:crieit.net,2005:PublicArticle/17901 2021-12-30T01:05:47+09:00 2021-12-30T01:07:46+09:00 https://crieit.net/posts/diverting-date-as-args-in-dockerfile-20211230 Dockerfile 内でコンテナの時刻を変数として流用し、年に対応した rpmパッケージ の GPG署名 をインストールする <p>Dockerコンテナ をビルドする際にコンテナ内の時刻(年)を他のコマンドに流用したくなりました。その方法をいくつか試したのでメモしておきます。</p> <h2 id="経緯"><a href="#%E7%B5%8C%E7%B7%AF">経緯</a></h2> <p>AlmaLinux で PHP7.4系 をインストールする際に Remiリポジトリ からインストールしようとしました。</p> <pre><code class="dockerfile">RUN rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-8.rpm && \ rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi2021 # disable default module RUN dnf module reset -y php # install php 7.4 RUN dnf module install -y php:remi-7.4 </code></pre> <p><code>rpm</code> を使用して Remiリポジトリ をインストールしています。</p> <p><code>rpm</code> ではパッケージインストールではパッケージが破損していないか、改ざんされていないかをチェックするために GPG署名 を用いています。</p> <p>その公開鍵の取得も、 Remiリポジトリ のインストールと同時に行っています。</p> <pre><code class="dockerfile">RUN rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-8.rpm && \ rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi2021 </code></pre> <p>ここでふと思ったのは、URLに年が入っていること。2022年になったら</p> <pre><code class="dockerfile">RUN rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-8.rpm && \ rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi2022 </code></pre> <p>に変えたい。かといってそれを毎年手動で更新するのは面倒なので、自動化したい。</p> <p>であれば、 <code>date</code> コマンドの値を <code>awk</code> に通すなどして年だけ取り出し、それを上述コマンドに流用できないか、と。</p> <h2 id="検証"><a href="#%E6%A4%9C%E8%A8%BC">検証</a></h2> <p>まずは AlmaLinux のコンテナをビルド・起動します。</p> <pre><code class="bash">docker run --name yeartest -it almalinux:8 /bin/bash </code></pre> <pre><code class="bash"># \cp -pf /usr/share/zoneinfo/Japan /etc/localtime ## タイムゾーン変更 # dnf -y update && yum -y install sudo epel-release ## 略 </code></pre> <p>パッケージを入れたり前準備。</p> <h3 id="date から年のみ取り出す"><a href="#date+%E3%81%8B%E3%82%89%E5%B9%B4%E3%81%AE%E3%81%BF%E5%8F%96%E3%82%8A%E5%87%BA%E3%81%99">date から年のみ取り出す</a></h3> <pre><code class="bash"># date Wed Dec 29 22:28:18 JST 2021 </code></pre> <p>普通に <code>date</code> を叩きます。ふむ、6番目ですね……。</p> <pre><code class="bash"># sudo date | sudo awk '{print $6}' 2021 </code></pre> <p>そこでパイプで繋いで <code>awk</code> に渡します。無事、年のみを取り出せました。</p> <h3 id="rpm の GPG署名 について"><a href="#rpm+%E3%81%AE+GPG%E7%BD%B2%E5%90%8D+%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6">rpm の GPG署名 について</a></h3> <p>一応インポートされている GPG署名 について確認しておきます。</p> <pre><code class="bash"># rpm -qa 'gpg-pubkey*' gpg-pubkey-3abb34f8-5ffd890e </code></pre> <p>まずデフォルトの状態。1つのみインポートされていますね。</p> <pre><code class="bash"># rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi2021 # rpm -qa 'gpg-pubkey*' gpg-pubkey-3abb34f8-5ffd890e gpg-pubkey-478f8947-5ff329c5 </code></pre> <p>次に <code>RPM-GPG-KEY-remi2021</code> をインポートします。増えました。</p> <pre><code class="bash"># rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi # rpm -qa 'gpg-pubkey*' gpg-pubkey-3abb34f8-5ffd890e gpg-pubkey-478f8947-5ff329c5 gpg-pubkey-00f97f56-467e318a </code></pre> <p>さらに <code>RPM-GPG-KEY-remi</code> をインポートすると増えました。</p> <h2 id="検証2"><a href="#%E6%A4%9C%E8%A8%BC2">検証2</a></h2> <ul> <li><a target="_blank" rel="nofollow noopener" href="https://github.com/arm-band/test-docker-tychedight">Tychedight</a></li> </ul> <p>以上を踏まえて、 Docker Compose からの Dockerfile ビルドで試験。</p> <pre><code class="dockerfile">FROM almalinux:8 RUN \cp -pf /usr/share/zoneinfo/Japan /etc/localtime RUN dnf -y update && yum -y install \ sudo \ epel-release RUN mkdir /home/temp/ # パターン1 RUN GEOFFROY=$(sudo date | sudo awk 'END{print $6}') \ && sudo echo ${GEOFFROY} >> /home/temp/geoffroy.txt # パターン2 RUN FROMONT=$(sudo date | sudo awk 'END{print $6}') RUN sudo echo ${FROMONT} >> /home/temp/fromont.txt # パターン3 RUN sudo echo \ | sudo date \ | sudo awk 'END{print $6}' \ >> /home/temp/carillon.txt </code></pre> <p>一応3つパターンを試してみます。さあ、それぞれのファイルには何が出力されるのか……。</p> <pre><code class="dockerfile"># パターン1 RUN GEOFFROY=$(sudo date | sudo awk 'END{print $6}') \ && sudo echo ${GEOFFROY} >> /home/temp/geoffroy.txt # 2021 # パターン2 RUN FROMONT=$(sudo date | sudo awk 'END{print $6}') RUN sudo echo ${FROMONT} >> /home/temp/fromont.txt # # パターン3 RUN sudo echo \ | sudo date \ | sudo awk 'END{print $6}' \ >> /home/temp/carillon.txt # 2021 </code></pre> <p>結果、意図した出力になったのは1つ目と3つ目のパターンでした。 <code>RUN</code> ごとにコンテナが変わるとのことなので2は望み薄だと思っていましたが……。</p> <p>そこで、パターン1を使って次のように組んでみます。</p> <pre><code class="dockerfile">FROM almalinux:8 RUN \cp -pf /usr/share/zoneinfo/Japan /etc/localtime RUN dnf -y update && yum -y install \ sudo \ epel-release RUN mkdir /home/temp/ # args RUN MELUSINE=$(sudo date | sudo awk 'END{print $6}') \ && rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-8.rpm \ && rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi${MELUSINE} </code></pre> <p>これでビルド・起動したコンテナに bash で入って確認。</p> <pre><code class="bash"># rpm -qa 'gpg-pubkey*' gpg-pubkey-3abb34f8-5ffd890e gpg-pubkey-478f8947-5ff329c5 </code></pre> <p>内容的にデフォルトと2021の公開鍵が入っているように見えます。</p> <pre><code class="bash"># rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi # rpm -qa 'gpg-pubkey*' gpg-pubkey-3abb34f8-5ffd890e gpg-pubkey-478f8947-5ff329c5 gpg-pubkey-00f97f56-467e318a </code></pre> <p>手動で <code>RPM-GPG-KEY-remi</code> を入れると増えました。</p> <pre><code class="bash"># rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi2021 # rpm -qa 'gpg-pubkey*' gpg-pubkey-3abb34f8-5ffd890e gpg-pubkey-478f8947-5ff329c5 gpg-pubkey-00f97f56-467e318a </code></pre> <p>ついでに手動で <code>RPM-GPG-KEY-remi2021</code> を入れようとしましたが、数は増えませんでした。先のコードで <code>RPM-GPG-KEY-remi2021</code> がインストールできていることが確認できました。OKです。</p> <h2 id="余談"><a href="#%E4%BD%99%E8%AB%87">余談</a></h2> <p>実は上述の通り年指定のない <code>http://rpms.famillecollet.com/RPM-GPG-KEY-remi</code> があるので、それを入れてしまえば終わりのような気もするのですが……折角なのでチャレンジしてみた次第です。</p> <h2 id="参考"><a href="#%E5%8F%82%E8%80%83">参考</a></h2> <h3 id="PHP インストール"><a href="#PHP+%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB">PHP インストール</a></h3> <ul> <li><a target="_blank" rel="nofollow noopener" href="https://www.tsuda1.com/%E6%9C%AA%E5%88%86%E9%A1%9E/php%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB/">PHPインストール PHP7.4 CentOS8 | AlmaLinux 自宅サーバ</a></li> </ul> <p>もしかして、そもそもいらない……?</p> <h3 id="rpm と GPG署名"><a href="#rpm+%E3%81%A8+GPG%E7%BD%B2%E5%90%8D">rpm と GPG署名</a></h3> <ul> <li><a target="_blank" rel="nofollow noopener" href="https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/6/html/deployment_guide/s1-check-rpm-sig">B.3. パッケージの署名確認 Red Hat Enterprise Linux 6 | Red Hat Customer Portal</a></li> <li><a target="_blank" rel="nofollow noopener" href="https://qiita.com/aosho235/items/9ba95b6b8fb1ce8ac580">CentOS 7 インストールされている全パッケージのrpmをダウンロードする - Qiita</a> <ul> <li>インポートされた公開鍵の確認</li> </ul></li> <li>参考: <ul> <li><a target="_blank" rel="nofollow noopener" href="https://www.kakiro-web.com/linux/centos6-remi-install.html">CentOS6.7 64bitのyumリポジトリにRemiを追加 - Kakiro-Web カキローウェブ</a></li> <li><a target="_blank" rel="nofollow noopener" href="https://pentan.info/server/linux/yum/remi.html">Remi 基本リポジトリで提供されていないパッケージのyumインストール - [yum/Linux [Red Hat/CentOSなど]] ぺんたん info</a></li> </ul></li> </ul> arm-band