如何确定服务器将从客户端接受的 CA 证书列表?



根据https://wiki.jasig.org/display/CASUM/X.509+Certificates,

服务器发送标识自己的证书后,它就可以发送一个证书颁发机构的名称列表,它愿意接受这些证书。

我想知道如何确定这个列表是什么,以及如何修改它。

我问的原因是,在成功验证(即票证阶段)之后,我在服务器和客户端之间获得了无限重定向,我认为这与CAS服务器不识别CAS客户端的证书(客户端的证书是自签名的)有关。

如果你想查看这个列表,你可以使用OpenSSL:

echo "" | openssl s_client -connect your.server:port

这将显示关于握手的各种消息,包括CertificateRequest消息中的证书和ca列表。

最终由活性X509TrustManagergetAcceptedIssuers()法确定。默认情况下,这将是您所有信任锚的主题DNs列表(即,您的信任存储中所有证书的主题DNs)。

您的客户端证书必须由服务器验证。这通常是由信任管理器在握手期间完成的,该管理器(除非进行了调整)将在信任存储库中构建到已知CA(或者至少是已知证书,如果是用户证书本身)的链。

将自签名证书添加到信任存储区应该就足够了。它不一定是与JVM绑定的cacerts文件,您可以复制它并使用Apache Tomcat连接器的信任存储设置来设置它。

最新更新