TLS/SSL暗号をサポートするサービスをチェックする testssl.sh

ALL
スポンサーリンク

WEBサイトのSSL安全性をチェックするサイトに SSL Server Test (Powered by Qualys SSL Labs) がありますが、同じような機能でWEB以外もチェックできる、bashスクリプト版のツールで testssl.sh があります。

/bin/bash based SSL/TLS tester: testssl.sh

これを使うと、サーバー設定や脆弱性のテスト等を行えます。
また、各種クライアントからの接続シミュレーションも行えるので、各種クライアントのサーバーへの接続の可否がチェックできます。

以下は実行時の画面の一部です。

以下は各種クライアントからの接続シミュレーションの結果です。このように接続の可否を確認できます。

スポンサーリンク

testssl.shの導入

現在時点(2022/4/8)の最新版は、3.0.7 です。
次の手順で取得します。

wget https://testssl.sh/testssl.sh-3.0.7.tar.gz
tar zxvf testssl.sh-3.0.7.tar.gz
cd testssl.sh-3.0.7/

実行方法

次のように実行すると、https/ポート443番に対してテストします。
xxxxxxの箇所は、サーバー名またはURLを指定します。
この時、サーバー証明書の内容と、サーバー名またはURLで指定したサーバー名が異なると、証明書のテストで「certificate does not match supplied URI」となって問題が検出されますので、注意してください。

./testssl.sh xxxxxx

実行すると、次のようにチェック結果が表示されます。
下記では表示結果の一部分だけを示していますが、実際はこの後に続けていろいろ表示されます。

次のように実行すると、プロトコルsmtpで587番ポートに対してテストできます。

./testssl.sh -t smtp xxxxxx:587

-t で指定できるプロトコルは他には、ftp, smtp, pop3, imapなどがあります。
この時、各プロトコルに合わせたポート番号を指定するようにして下さい。

2022.5.14追記
apache/postfix/dovecotについては、テスト方法を次の箇所で説明しています。

サーバーのSSL/TLS設定をテストするssltest.shでの結果に対処する apache編 | パソコン鳥のブログ
サーバーのSSL/TLS設定をテストするssltest.shでの結果に対処する postfix編 | パソコン鳥のブログ
サーバーのSSL/TLS設定をテストするssltest.shでの結果に対処する dovecot編 | パソコン鳥のブログ

結果の見方

testssl.shではテスト結果で、セキュリティ重大度を色分けで表示します。
端末の設定によって若干見え方は異なるかもしれませんが、次のようになります。

この時、重大度と色の対応は次のようになっています。

桜色・・・CRITICAL
赤・・・HIGH
暗い黄色・・・MEDIUM
黄色・・・LOW

検出された脆弱性への対処方法

2022.5.14追記
apache/postfix/dovecotのテスト方法と、検出された脆弱性への対処方法を次の記事で説明しています。

サーバーのSSL/TLS設定をテストするssltest.shでの結果に対処する apache編 | パソコン鳥のブログ
サーバーのSSL/TLS設定をテストするssltest.shでの結果に対処する postfix編 | パソコン鳥のブログ
サーバーのSSL/TLS設定をテストするssltest.shでの結果に対処する dovecot編 | パソコン鳥のブログ

テストを個別に実施する

サーバーの設定を変えてテスト、を繰り返す場合、testssl.shですべての項目のテストでは無く、設定変更に関するテストのみ行う方が効率的です。

以下のようにオプションを付けて実行すると、各テストのみ実行できます。
太字の部分は、testssl.shを下記オプション無しに実行したときのテスト結果に表示される項目名です。

Testing protocols via sockets except NPN+ALPN
プロトコル(SSLv3やTLS1.2等)テストを実施します。
./testssl.sh -p XXXXX

Testing server preferences
サーバー設定のテストです。
./testssl.sh -P XXXXX

Testing 370 ciphers via OpenSSL plus sockets against the server, ordered by encryption strength
サーバに対して各種暗号の対応をチェックし、対応暗号を強度の高い順に表示します。
./testssl.sh -e XXXXX

Testing ciphers per protocol via OpenSSL plus sockets against the server, ordered by encryption strength
サーバに対して各種暗号の対応をプロトコル(SSLv3やTLS1.2等)ごとにチェックし、対応暗号を強度の高い順に表示します。
./testssl.sh -E XXXXX

Testing cipher categories
サーバに対して各種暗号の対応を、暗号強度ごとにチェックします。
./testssl.sh -s XXXXX

Testing robust (perfect) forward secrecy, (P)FS — omitting Null Authentication/Encryption, 3DES, RC4
完全な前方秘匿性の鍵交換のチェックを行います。
./testssl.sh -f XXXXX

Testing server defaults (Server Hello)
SSL/TLS 通信時のメッセージ Server Hello の情報をチェックします。
./testssl.sh -S XXXXX

Testing HTTP header response @ “/”
HTTPヘッダーのチェックを行います。
./testssl.sh -h XXXXX

Running client simulations (HTTP) via sockets
各種クライアントのサーバーへの接続をシミュレーションし、接続の可否を表示します。
./testssl.sh -c XXXXX

コメント