素早くSSL/TLSのテストが行えるtestssl.sh


SSL Server Testは便利だけど時間がかかる

各種サーバにおけるSSL/TLSの設定テストには、SSL Server Testがよく使われます。
各種ブラウザにおけるシミュレーション結果など、非常に詳しく出してくれる反面時間がかかります。
また、TCPの443番以外のテストには対応していないため、例えばメールサーバなどのテストを行うことができません。

そこでtestssl.sh

testssl.shはシェルスクリプトベースのSSL/TLSのテストツールで、OpenSSL 1.0以降がインストールされているシステムで利用が可能です。

現時点(2015/01/28)の正式版である2.2では、以下の機能をサポートしました。

  • POODLE(CVE-2014-3566)に対するチェック
  • HPKP(Public Key Pinning Extension for HTTP)への対応
  • OCSP Staplingへの対応
  • サービスの検出(HTTP, IMAP, POP, SMTP) など

以下の脆弱性のテストをサポートしています。

CVE番号 名称 概要
CVE-2014-0160 Heartbleed OpenSSL 1.0.1系列などに存在した有名な脆弱性
CVE-2014-0224 CCS Injection OpenSSLのChangeCipherSpecメッセージの処理に関する脆弱性
CVE-2014-3566 POODLE SSL3に存在する脆弱性
CVE-2011-3389 BEAST TLS1.0までにおけるCBCモードの暗号への攻撃
CVE-2013-3587 BREACH TLS上でやりとりされた圧縮データの特徴を使った攻撃
CVE-2012-4929 CRIME TLSのプロトコルレベル圧縮に対する攻撃
CVE-2009-3555 - TLSのrenegotiationに存在する脆弱性

(3/13追記) GitHubにある開発版ではFREAK(CVE-2015-0204)のテストに対応しています

使い方

とりあえず使えるようにするには、testssl.shをダウンロードして実行権限を付与するだけでOKです。

$ wget https://testssl.sh/testssl.sh
$ chmod +x testssl.sh

testssl.shをPATHの通ってるところに置いたりとかしておくと便利です。

たとえば、example.com:443をチェックするには以下のコマンドを実行します。

$ ./testssl.sh example.com
(HTTPS:443は省略できます)

便利なオプション

あるサーバがサポートしている暗号スイートの一覧を表示するには、-eオプションを使います。

$ ./testssl.sh -e example.com

脆弱性テストは単体でも実行可能で、例えばPOODLEのテストは-0オプションです。

$ ./testssl.sh -0 example.com