12
20
2020
サーバのSSL(TLS)証明書の設定を検証してみる
サーバ証明書が適切に設定されていることを確認してみる
証明書を取り巻く環境の変化
ここ数年間で殆どのWEBサイトがHTTPS暗号化通信方式に移行しており、最近のモダンWEBブラウザではHTTPS以外のWEBサイトにアクセスするとデフォルトで警告を発し、ユーザが除外設定を行わないとアクセスできない設定になっている.
現時点ではまだHTTP通信路が暗号化されているかどうかの確認だが、その内証明書の暗号化方式や暗号鍵の安全性などもブラウザ側で検証されるようになるのだろう.
私は外部公開用のサーバ証明書に関してはきちんとした組織が発行する有償の証明書しか使わないようにしている.外部公開用途でも無償で発行されるLet’S Encryptを好んで使っている人達がいるが、世の中の フィッシングサイトの殆ど大部分は Let’s Encrypt を利用していることからも分かるように、きちんとした用途のサーバにLet’s Encryptの証明書を使うことは避けた方が良い.
最近、きちんとした組織が発行した筈の証明書に不備があり、証明書そのものを再発行せざる負えなくなるという事が私の身の回りでも起きている.
一つ目はこのサイト(y2tech.net)でも使用している、JPRSが発行しているDVサーバ証明書で、中間認証局(JPRS)が発行した証明書の記載内容に不備があり、セキュリティ上の問題が発生(今年の夏頃に発覚)したので、年明けの1月末に現在の認証局を失効させるという何とも傍迷惑な事態を引き起こしている.
当然ながら、その中間認証局を通じて発行された全ての証明書は新しい認証局の元で一から作り直しとなる.この辺の顛末は、JPRSのサイトで説明されている.
もう一つは、大学や研究機関で幅広く使われているUPKIのサーバ証明書やクライアント証明書が、最近のモダンブラウザの証明書ハンドリングの厳格化(CA/Browser Forum Baseline Requirements )の影響を受けて、それらに準拠したポリシーによる中間認証局に改修しなければならなくなり、こちらも全ての証明書を再発行しなければならなくなってしまっている.
https://certs.nii.ac.jp/news/20201026
UPKIの場合は、大学の教職員や学生などのクライアント証明書としても使われており、膨大な数の証明書が失効することになるので、その影響は甚大だ.
商用のJPRSと学術・研究系のUPKIの上位認証局はどちらもセコムトラストシステムズとなっている.そう言えば、今から5〜6年前にマイクロソフトがWindowsに組み込むルート認証局の取り扱いを巡って、セコムトラストシステムズが除外されそうになるというドタバタ劇があった事を思い出す.
Appleの証明書有効期間の短縮方針や”CA/Browser Forum Baseline Requirements” などの動きから、今後も証明書関連のドタバタに振り回されることになりそうだ.
サーバ証明書の内容や設定が適切であるかどうか調べてみる
今回の本題である、サーバ証明書の中身の検証やサーバ側の暗号化方式や暗号鍵等の取り扱いが不適切であると、セキュリティー上の問題だけではなく、ユーザからのアクセスができなくなったり、ユーザから怪しいサイトと見做されてしまうことになる.
サーバ証明書のベースとなっている技術を完全に理解するのは難しいが、幸いなことに証明書の内容や暗号化方式などを簡単に調べてくれる便利なサイトが幾つか公開されている.これらのサイトを利用して、サーバ証明書やサーバの設定が適切になされているのか簡単に調べることができる.
代表的なサイトを2つほど紹介する.
【Qualys, Inc.】
・SSL Server Testテストしたいサイトのドメイン名を入力
評価ランクをIPv6/IPv4の両方でチェックしてくれる
IPアドレスのリンクをクリックして詳細内容を表示
サーバ側の暗号化方式なども詳細に調べてくれる
【DigiCert】
・DigiCert® SSL Installation Diagnostics ToolDigicertのテストサイトはSSL Labよりはシンプル
Digicertのテスト結果表示
サーバのSSL設定例
上記の”y2tech.net” サイトは AWS Linux 2 で、Apache 2.4 (mod SSL)で構成されている.ちなみに SSLの設定ファイルでは次のような “SSLCipherSuite” の設定をしている.
<VirtualHost _default_:443>
SSLEngine on
SSLProtocol TLSv1.2
SSLCipherSuite "ECDHE+AESGCM:DHE+aRSA+AESGCM:ECDHE+AESCCM:DHE+aRSA+AESCCM:+AES256:ECDHE+CHA CHA20:DHE+aRSA+CHACHA20:+DHE:ECDHE+AES128:ECDHE+CAMELLIA128:ECDHE+AES:ECDHE+CA MELLIA:+ECDHE+SHA:DHE+aRSA+AES128:DHE+aRSA+CAMELLIA128:DHE+aRSA+AES:DHE+aRSA+CA MELLIA:+DHE+aRSA+SHA"
SSLCertificateKeyFile xxxx/yyyy/zzzz/aaaaa.key <== 秘密鍵
SSLCertificateFile xxxx/yyyy/aaaaa.crt <== 証明書
SSLCACertificateFile xxxx/yyyy/JPRS_DVCA_G4_PEM.cer <== 中間証明書
...
TransferLog logs/ssl_access_log
</VirtualHost>
IPAのTLS暗号設定ガイドライン 第3.0版
TLS暗号の取り扱いに関する詳細を知りたければ、IPAが公開している 「TLS暗号設定ガイドライン 第3.0版」 が分かり易い.
具体的なサーバの設定例などの資料も用意されているので、一通り目を通しておくのが良いだろう.
・TLS暗号設定ガイドライン・参考資料一式(ZIPファイル、7.24MB)