TLS decode error
问题:应用Openssl client 测试 基于MbedTLS 开发的TLS server 1.2 成功,而应用QtSslSocket client 1.2 and more测试连接时,TLS server报decode error。
原理:
RFCXXXX 指定的声明了标准的协议内容----SSL/TLS 默认使用此作为资料
MbedTLS使用的版本2.16,支持SSL3.0/TLS1.0/TLS1.1/TLS1.2默认配置下,作为服务端,支持的比较单纯, 兼容性上要做处理实际很少,(如果要做,要针对Client Hello的拓展来做)
OpenSSL最新上,依照这兼容性最广来做。
QtSsLSocket调用OpenSSL方上,使用openSSL库未必最新,使用兼容上未必处理完善。如Qt11 Qt12之间,调用函数库不一致,
对ClientHello 版本处理差异。Qt12上支持了TLS1.3,因此对TL1.2来说,实际收到的ClientHello,ClientKeyExchangFinish调用了X25519的校验。如服务器选定的是secpXXXr1Curve,将导致decode error
协议上,声明clientHello提供选择,serverhello做出选择。但clientHello对选择supoort groups选项,做了自行选定key_share。serverKeyExchange:Cureve Name。
处理:
Away:服务器注重处理key_share------------------------e..MbedTLS disable MBEDTLS_ECP_DP_SECPXXXR1_ENABLED enable MBEDTLS_ECP_DP_CURVE25519_ENABLED
but error the ECP_DP_C define error:seems dont edit finished
Bway:客户端除去key_share(by setOnly TLS1.2 (max))-------------------------Qt5.14.2
Cway:客户端注重处理serverHello,对curvename再初始化自己的曲线---------OpenSSL(now:1.1.1.e)
解决方法:
MbedTLS配置时,最高只到TLS1.2,而QtSslsocket选定时,选择了TLS1.2 and more, 限定1.2。
Your Regards
Auch_one
2020/8/22 18:12:42
浙公网安备 33010602011771号