SSL / TLS客户端身份validation:如何查看可接受的客户端证书CA名称?

我有一个使用SSL / TLS客户端身份validation的HTTPS服务,并要求提供一个证书。 如何在不显示客户端证书的情况下使用openssl s_client获取可接受的客户端证书CA名称的列表?

如果我尝试没有客户端证书,我得到以下错误:

 4967:error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure: 

使用以下命令:

openssl s_client -connect website_fqdn:443 -state -nbio 2>&1

输出将包含“可接受的客户端证书CA名称”

您需要使用-prexit选项:

例如

 openssl s_client -connect server:8443 -prexit 

当程序退出时打印会话信息。 即使连接失败,也将始终尝试打印信息。 通常信息只会在连接成功的情况下打印一次。 此选项非常有用,因为正在使用的密码可能会重新协商,或者连接可能失败,因为客户端证书是必需的,或者仅在尝试访问某个URL后才被请求。 注意:由这个选项产生的输出并不总是准确的,因为连接可能永远不会被build立。