我们在项目中实现了基于OpenSSL 1.1.1的TLS 1.3双向认证机制。服务器端配置了CA证书、服务器证书及私钥,客户端也拥有合法的CA签发证书。但在实际连接中,客户端握手失败,OpenSSL报错SSL alert number 42(证书未知或不受信任)。
已尝试的排查步骤:
1. 确认客户端证书未过期,且由服务器信任的CA签发。
2. 在服务器端通过SSL_CTX_load_verify_locations加载了CA证书,并设置SSL_VERIFY_PEER。
3. 使用openssl s_client测试时,若服务器不要求客户端证书,连接正常;一旦启用-verify选项则失败。
关键疑问:
- TLS 1.3的双向认证流程中,是否需额外处理证书扩展(如密钥用途、扩展密钥用途)?
- OpenSSL的证书验证回调中,如何输出更详细的验证错误信息(如具体哪些检查未通过)?
- 是否有工具或方法可逐层对比证书链的验证结果?
环境:Linux x86_64,OpenSSL 1.1.1g。期待有相关经验的朋友分享排查思路或调试技巧!
邀请回答
换一换
暂无数据