opensslコマンドでSSL証明書の正当性を確認する

サーバにSSL証明書をインストールしても、
Webブラウザだけだと中間証明書が正しくインストールされているかどうか不安になりますよね?
最近のブラウザだと同梱されている証明書が多いため、本当に中間証明書が参照されているか分からないためです。

そんな時はopensslのs_clientで証明書の正当性を確認すると確実です

1. 主要な証明書のインストール
Debian系ならaptで主要な証明書をダウンロードできます
インストールすると「/usr/share/ca-certificates/mozilla」に証明書が入ります

# apt-get install ca-certificates

2. opensslコマンド
後はopensslコマンドで繋いでみます
例えば、example.comの証明書が以下の階層構造になっていたとします
EquifaxがGeoTrustを証明し、GeoTrustがRapidSSLを証明し、RapidSSLがexample.com(あなたのサイト)を証明していたとします

 Equifax
 `-- GeoTrust Inc
     `-- RapidSSL
         `-- www.example.com (あなたのサイト)

この場合は最初から信頼するのはEquifax(ルート証明書)なので、こんな感じのコマンドで確認します

$ openssl s_client \
-CAfile /usr/share/ca-certificates/mozilla/Equifax_Secure_CA.crt \
-connect www.example.com:443

3. 結果の確認
Certificate chainの部分で証明書の連鎖を確認できます。
あとは最後の方に表示される「Verify return code: 0 (ok)」を確認しましょう。
有効期限や、中間証明書の正当性を含めたSSLセッションが正しいと0になるはずです。

その他の方法として、証明書をチェックしてくれるWebサービスを利用するのも良いかもしれません
http://www.atmarkit.co.jp/fwin2k/win2ktips/1406sslchk/sslchk.html

Ruby on RailsによるWEBシステム開発、Android/iPhoneアプリ開発、電子書籍配信のことならお任せください この記事を書いた人と働こう! Ruby on Rails の開発なら実績豊富なBPS

この記事の著者

yamasita

東京電機大学工学部→3年間某SIerにて銀行システムの開発→bpsに入社

yamasitaの書いた記事

インフラ
現場で使うansible

2014年12月25日

インフラ
検証環境の作り方

2014年08月14日

週刊Railsウォッチ

インフラ

Rubyスタイルガイドを読む

BigBinary記事より

ActiveSupport探訪シリーズ