#navi_header|技術| - https://testssl.sh/ - https://github.com/drwetter/testssl.sh サーバのSSL/TLSをセキュリティ観点でチェックしてくれるツール、testssl.shを使うメモ。 #outline|| ---- * インストール(Version 2.9.5-1版) 2017年の9月に安定版として 2.9.5-1 がリリースされたのでこれをインストールしてみる。 (正確にはこの時点での安定版は 2.8 だが、開発中の 2.9 branch の中でも安定版として言える状態として 2.9.5-1 がリリースされてる。) 環境:CentOS7, 64bit版 インストールのポイントとしては、 https://testssl.sh/ から testssl.sh をDLするのではなく、GitリポジトリをそのままcloneするかリリースパッケージをDL, 展開する方法に変わってる点。 OpenSSLバイナリも特殊なのをビルドして使ってたりするので、今後はこちらの方式が簡単かもしれない。 ** Gitからclone -> 2.9devになる https://github.com/drwetter/testssl.sh の Readme.md にあるとおりにする。 #pre||> $ git clone --depth 1 https://github.com/drwetter/testssl.sh.git $ cd testssl.sh/ $ ./testssl.sh -v (...) ########################################################### testssl.sh 2.9dev from https://testssl.sh/dev/ (...) ||< 2.9dev branchがデフォルトのbranchとなっている。gitのcloneオプションを調整すれば、他のbranchを利用することも可能だろう。 また、このままでは /bin/openssl を見に行ってしまい、testssl.sh 中の bin/opensslバイナリを使ってくれなかった。 →以下のようにOPENSSL環境変数で調整できる。 #pre||> $ OPENSSL=./bin/openssl.Linux.x86_64 ./testssl.sh -v (...) Using "OpenSSL 1.0.2-chacha (1.0.2i-dev)" [~183 ciphers] on L0000627:./bin/openssl.Linux.x86_64 (...) ||< ** GitHubのリリースアーカイブを使う GitHubのリリースページからアーカイブをDLする。 - https://github.com/drwetter/testssl.sh/releases #pre||> $ curl -L -O https://github.com/drwetter/testssl.sh/archive/v2.9.5-1.tar.gz $ tar zxf v2.9.5-1.tar.gz $ cd testssl.sh-2.9.5-1/ $ ./testssl.sh -v (...) ########################################################### testssl.sh 2.9.5 from https://testssl.sh/ (...) ||< こちらでもやはりOpenSSLバイナリが /bin/openssl をデフォルトで使ってしまうので、環境変数かコマンドラインで調整する。 #pre||> $ OPENSSL=./bin/openssl.Linux.x86_64 ./testssl.sh -v or $ ./testssl.sh --openssl ./bin/openssl.Linux.x86_64 -v → (...) Using "OpenSSL 1.0.2-chacha (1.0.2i-dev)" [~183 ciphers] on L0000627:./bin/openssl.Linux.x86_64 (...) ||< * 主な使い方 ※チェックする対象は自分の管理下にあるサーバか、脆弱性検査を許可されたサーバのみにすること。 通常テスト: $ ./testssl xxx.xx.xxx.xx:443 HTMLに出力(通常テストでコンソールで使われるエスケープシーケンスが、ちゃんとHTMLにも反映されます) $ ./testssl.sh --html www.glamenv-septzen.net:443 プロトコルバージョンごとにcipher suiteをリストアップ $ ./testssl -E xxx.xx.xxx.xx:443 特にプロトコルバージョンごと、にはこだわらず、全部混ぜてリストアップ $ ./testssl -e xxx.xx.xxx.xx:443 * 参考/その他 参考: - SSTtechlog 05 JavaでSSL/TLS接続アプリケーションを作ってみよう(1) : SSL版Echoサーバ/クライアントの作成と脆弱性テスト(testssl.sh,Nmap) | SST 株式会社セキュアスカイ・テクノロジー -- https://www.securesky-tech.com/column/techlog/05.html -- 2016年3月の記事で、testssl.shのバージョンも2.6となっている。インストール手順が古い。 その他: - HTML出力が便利だが、標準出力をそのままHTMLにするのであれば、 https://github.com/theZiz/aha を通す。 $ ./testssl.sh xxx.xx.xxx.xx:443 | aha > output.html - OpenSSLのciphersuite名をRFCにマッピングするの、2.6の時は別途 mapping-rfc.txt をDLして配置する必要があったが、2.9.5-1 ではその必要無く、OpenSSL形式とRFC形式の両方で表示してくれた。 #navi_footer|技術|