openssl s_client を SSL,TLSプロトコル指定してリクエストする

セキュリティ関連,証明書関連

概要

  • 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