openssl s_client を SSL,TLSプロトコル指定してリクエストする
Contents
概要
- openssl s_client コマンドは、SSL/TLS を使用してリモート ホストに接続、サーバーのSSL を診断するためのツールです。
- 今回は、SSL,TLSプロトコル指定してopenssl s_client コマンドを実行します。ウェブサーバーが TLS 1.1やTLS 1.2 をサポートするかを確認する際に便利です。
openssl s_client でSSL,TLSプロトコルを指定する
一般的なopenssl s_client コマンドの使用方法
- CN (コモンネーム) が “www.example.com" の場合は、以下となります。
- -connect host:port に接続先のホスト名, ポートを指定します。省略すると、443 で接続が試行されます。
openssl s_client -connect www.example.com:443
- SNI(Server Name Indication) を使用する場合(1つのウェブサーバーに複数のSSL サーバー証明書を使用する場合) は、以下となります。
- -servername name は、ClientHello message のSNI 拡張を使用しホスト名を指定します。省略すると、-connect に指定した名前が使われます。
openssl s_client -connect www.example.com:443 -servername www.example.com
- その他CA 証明書を指定する場合は、-CAfile を指定します。オプションの詳細は、ドキュメントを確認ください。
openssl s_client にSSL,TLSプロトコルを指定する方法
- 以下のオプションで、特定のSSL,TLSプロトコルを使ってリクエストが行われます。また、プロトコルは以下の順に新しくなっています。(SSL2.0(旧) → TLS1.3(新))
- -ssl2, -ssl3, -tls1, -tls1_1, -tls1_2, -tls1_3
- -tls1_3 は、OpenSSL 1.1.1以降が必要となります。
- 以下のオプションで、特定のSSL,TLSプロトコルを無効にしたリクエストが行われます。また、プロトコルは以下の順に新しくなっています。(SSL2.0(旧) → TLS1.3(新))
- -no_ssl2, -no_ssl3, -no_tls1, -no_tls1_1, -no_tls1_2, -no_tls1_3
- -no_tls1_3 は、OpenSSL 1.1.1以降が必要となります。
- オプションの詳細は、ドキュメントを確認ください。
- 以下、-tls1_2 オプションを指定した出力結果です。AWS の ALB を使用しています。HTTPS リスナーの セキュリティポリシーには、ELBSecurityPolicy-TLS13-1-2-2021-06 (TLS 1.3 をサポートしTLS 1.2 と下位互換性あり)を使用しています。
$ openssl11 s_client -connect example.com:443 -tls1_2
CONNECTED(00000003)
depth=2 C = US, O = Amazon, CN = Amazon Root CA 1
verify return:1
depth=1 C = US, O = Amazon, CN = Amazon RSA 2048 M03
verify return:1
depth=0 CN = example.com
verify return:1
---
Certificate chain
0 s:CN = example.com
i:C = US, O = Amazon, CN = Amazon RSA 2048 M03
1 s:C = US, O = Amazon, CN = Amazon RSA 2048 M03
i:C = US, O = Amazon, CN = Amazon Root CA 1
2 s:C = US, O = Amazon, CN = Amazon Root CA 1
i:C = US, ST = Arizona, L = Scottsdale, O = "Starfield Technologies, Inc.", CN = Starfield Services Root Certificate Authority - G2
3 s:C = US, ST = Arizona, L = Scottsdale, O = "Starfield Technologies, Inc.", CN = Starfield Services Root Certificate Authority - G2
i:C = US, O = "Starfield Technologies, Inc.", OU = Starfield Class 2 Certification Authority
---
Server certificate
-----BEGIN CERTIFICATE-----
** 省略 **
-----END CERTIFICATE-----
subject=CN = example.com
issuer=C = US, O = Amazon, CN = Amazon RSA 2048 M03
---
No client certificate CA names sent
Peer signing digest: SHA256
Peer signature type: RSA-PSS
Server Temp Key: X25519, 253 bits
---
SSL handshake has read 5570 bytes and written 325 bytes
Verification: OK
---
New, TLSv1.2, Cipher is ECDHE-RSA-AES128-GCM-SHA256 ※使用されたTLS バージョン,暗号スイートが表示される
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
Protocol : TLSv1.2 ※リクエストしたTLS バージョン,暗号スイートが表示される
Cipher : ECDHE-RSA-AES128-GCM-SHA256
Session-ID: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Session-ID-ctx:
Master-Key: yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
PSK identity: None
PSK identity hint: None
SRP username: None
TLS session ticket lifetime hint: 86400 (seconds)
TLS session ticket:
** 省略 **
Start Time: 1709945627
Timeout : 7200 (sec)
Verify return code: 0 (ok)
Extended master secret: yes
- 以下、-tls1_1 オプションを指定した出力結果です。AWS の ALB を使用しています。HTTPS リスナーの セキュリティポリシーには、ELBSecurityPolicy-TLS13-1-2-2021-06 (TLS 1.1 以下は非サポート)を使用しています。
$ openssl11 s_client -connect example.com:443 -tls1_1
CONNECTED(00000003)
139699176822592:error:1409442E:SSL routines:ssl3_read_bytes:tlsv1 alert protocol version:ssl/record/rec_layer_s3.c:1544:SSL alert number 70
---
no peer certificate available ※有効な証明書なし
---
No client certificate CA names sent
---
SSL handshake has read 7 bytes and written 142 bytes
Verification: OK
---
New, (NONE), Cipher is (NONE) ※非対応のため、TLS バージョン,暗号スイートはNone となる
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
Protocol : TLSv1.1 ※リクエストしたTLS バージョン,暗号スイートが表示される
Cipher : 0000
Session-ID:
Session-ID-ctx:
Master-Key:
PSK identity: None
PSK identity hint: None
SRP username: None
Start Time: 1709946109
Timeout : 7200 (sec)
Verify return code: 0 (ok)
Extended master secret: no