根据https://wiki.jasig.org/display/CASUM/X.509+Certificates,
服务器发送标识自己的证书后,它就可以发送一个证书颁发机构的名称列表,它愿意接受这些证书。
我想知道如何确定这个列表是什么,以及如何修改它。
我问的原因是,在成功验证(即票证阶段)之后,我在服务器和客户端之间获得了无限重定向,我认为这与CAS服务器不识别CAS客户端的证书(客户端的证书是自签名的)有关。
如果你想查看这个列表,你可以使用OpenSSL:
echo "" | openssl s_client -connect your.server:port
这将显示关于握手的各种消息,包括CertificateRequest
消息中的证书和ca列表。
最终由活性X509TrustManager
的getAcceptedIssuers()
法确定。默认情况下,这将是您所有信任锚的主题DNs列表(即,您的信任存储中所有证书的主题DNs)。
您的客户端证书必须由服务器验证。这通常是由信任管理器在握手期间完成的,该管理器(除非进行了调整)将在信任存储库中构建到已知CA(或者至少是已知证书,如果是用户证书本身)的链。
将自签名证书添加到信任存储区应该就足够了。它不一定是与JVM绑定的cacerts
文件,您可以复制它并使用Apache Tomcat连接器的信任存储设置来设置它。