gpt4 book ai didi

clientHello 后 SSL handshake_failure

转载 作者:太空宇宙 更新时间:2023-11-03 13:03:11 33 4
gpt4 key购买 nike

我正在尝试使用带有 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 screenshot中可以看出, 客户端支持以下密码套件;

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)

...客户端支持以下签名算法(请看截图底部的十六进制部分,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

如上所示,这两个套件匹配。

  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
  • TLS_ECDHE_RSA_WITH_RC4_128_SHA

而且,我已经检查了“www.digicert.com/help/”中的证书(使用“smtp.gmail.com:465”)并得到了这个:Digicert Screenshot

  • 签名算法 = 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 个声誉时,我将用常规链接替换它们:)

最佳答案

我刚刚遇到这个,我意识到这已经很长时间了。很遗憾没有早点找到它。

但是对于将来遇到这种情况的用户...

我知道连接到谷歌服务器的要求在过去 6-9 个月内发生了变化。如果客户端问候数据包不包含支持的曲线扩展,Google 服务器将完全忽略任何连接尝试。

在构建 wolfSSL 库以连接到任何谷歌服务器时,您能否尝试将这些定义添加到您的默认设置中:

#define HAVE_SUPPORTED_CURVES
#define HAVE_TLS_EXTENSIONS

(相应的配置选项是:“--enable-supportedcurves”,它将定义上述两个预处理器宏)

并使用 API 在任何客户端应用程序中加载至少一条受支持的曲线:

wolfSSL_UseSupportedCurve(ssl, <CURVE NAME>);

可以在 (wolfssl-root)/wolfcrypt/src/ecc.c 顶部的评论部分找到支持的曲线列表

关于clientHello 后 SSL handshake_failure,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35341394/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com