2

WolfSSL で tls1.2 を使用して、組み込みデバイスを smtp.gmail.com:465 に接続しようとしています。ライブラリは、次の clientHello メッセージを作成して送信し、ハンドシェイクの失敗を受け取ります。

16 03 03 00 4f 01 00 00  4b 03 03 2e 2a ec 85 7f
15 dd 09 5f 22 d1 53 82  60 d7 80 67 28 aa 67 48 
ce f0 71 ab 63 d0 b2 3e  55 3a 05 00 00 14 c0 27 
c0 23 c0 0a c0 09 c0 07  c0 08 c0 14 c0 13 c0 11 
c0 12 01 00 00 0e 00 0d  00 0a 00 08 04 03 02 03 
04 01 02 01

受信したメッセージは次のとおりです。

15 03 03 00 02 02 28

Wiresharkのスクリーンショットでわかるように、次の暗号スイートがクライアントでサポートされています。

TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (0xc027)
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 (0xc023)
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA (0xc00a)
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA (0xc009)
TLS_ECDHE_ECDSA_WITH_RC4_128_SHA (0xc007)
TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA (0xc008)
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (0xc014)
**TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (0xc013)**
**TLS_ECDHE_RSA_WITH_RC4_128_SHA (0xc011)**
TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA (0xc012)

...そして、次の署名アルゴリズムがクライアントでサポートされています (スクリーンショットの下部にある 16 進数部分を参照してください。wireshark は署名アルゴリズムをデコードしません)。

04 03: SHA256 EDCSA
02 03: SHA1   EDCSA
04 01: SHA256 RSA
02 01: SHA1   RSA

一方、smtp.gmail.com は次の暗号スイートをサポートしています。(これは、「superuser.com/questions/109213/how-do-i-list-the-ssl-tls-cipher-suites-a-particular-website-offers」でスクリプトを実行することによって取得されます)

TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
**TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA**
**TLS_ECDHE_RSA_WITH_RC4_128_SHA**
TLS_RSA_WITH_AES_128_GCM_SHA256
TLS_RSA_WITH_AES_128_CBC_SHA256
TLS_RSA_WITH_AES_128_CBC_SHA
SSL_RSA_WITH_RC4_128_SHA
SSL_RSA_WITH_RC4_128_MD5
TLS_RSA_WITH_AES_256_GCM_SHA384
TLS_RSA_WITH_AES_256_CBC_SHA256
TLS_RSA_WITH_AES_256_CBC_SHA
SSL_RSA_WITH_3DES_EDE_CBC_SHA

上記のように、これら 2 つのスイートは一致します。

  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
  • TLS_ECDHE_RSA_WITH_RC4_128_SHA

そして、「www.digicert.com/help/」(「smtp.gmail.com:465」を使用) で証明書を確認したところ、次のようになりました: Digicert スクリーンショット

  • 署名アルゴリズム = SHA256 + RSA (優れた)

これも似合う

「tools.ietf.org/html/rfc5246#section-7.2.2」によると

  Reception of a handshake_failure alert message indicates that the
  sender was unable to negotiate an acceptable set of security
  parameters given the options available.  This is a fatal error.

私が理解している限り、handshake_failure の暗号スイートと署名アルゴリズムの不一致以外の理由が存在するか、非常に大きなものを見逃しています。失敗の理由を探していますが、見つかりません。どんな助けやアイデアにも感謝します。handshake_failure の原因は何ですか?

クリックできないリンクで大変申し訳ありません。stackoverflow では、2 つ以上のリンクを追加できません。評判が10になったら、通常のリンクに置き換えます:)

4

1 に答える 1