我有一个使用 SSL/TLS 客户端身份验证并要求出示证书的 HTTPS 服务。如何在openssl s_client
不出示客户端证书的情况下获取可接受的客户端证书 CA 名称列表?
如果我尝试不使用客户端证书,我会收到以下错误:
4967:error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure:
答案1
您需要使用以下-prexit
选项:
例如
openssl s_client -connect server:8443 -prexit
在程序退出时打印会话信息。即使连接失败,也会始终尝试打印信息。通常,如果连接成功,信息只会打印一次。此选项很有用,因为正在使用的密码可能会重新协商,或者连接可能会失败,因为需要客户端证书或仅在尝试访问某个 URL 后才请求客户端证书。注意:此选项产生的输出并不总是准确的,因为可能从未建立过连接。
答案2
使用以下命令:
openssl s_client -connect website_fqdn:443 -state -nbio 2>&1
输出将包含“可接受的客户端证书 CA 名称”