我有一个嵌入式设备,使用 mBedTLS,尝试打开与https://www.cloudflare.com的连接,但失败:
#define MBEDTLS_ERR_PK_UNKNOWN_NAMED_CURVE -0x3A00 /**< Elliptic curve is unsupported (only NIST curves are supported). */
Run Code Online (Sandbox Code Playgroud)
由于硬件限制,设备仅支持以下曲线:
MBEDTLS_ECP_DP_SECP192R1
MBEDTLS_ECP_DP_SECP224R1
MBEDTLS_ECP_DP_SECP256R1
Run Code Online (Sandbox Code Playgroud)
并启用了以下 TLS 扩展:
Supported Elliptic Curves
Supported Point Formats
Run Code Online (Sandbox Code Playgroud)
查看 cloudflare.com 证书:https ://www.ssllabs.com/ssltest/analyze.html ? d = www.cloudflare.com & s = 104.17.210.9
我可以看到 cloudflare.com 支持 RSA 和 ECDSA 证书。
ECDSA 服务器证书使用 256 位 EC 密钥,但该证书的颁发者使用 384 位 EC 密钥。
这就是导致设备出现故障的原因。设备无法验证链中的 384 位证书。
那么,这是 cloudflare.com 的问题吗?服务器是否应该看到客户端不支持其证书链中的所有曲线并恢复为 RSA 证书?
即设备提供了它支持的曲线列表,但服务器返回一个证书链,链中包含一个不受支持的 EC。如果所有曲线都受支持,服务器是否会检查客户端提供的“支持的椭圆曲线”TLS 扩展,是否仅返回证书链?
任何见解表示赞赏。
ssl ×1