这是我在论坛上的第一个问题,请事先接受我的道歉,如果有任何错误。我在配置Tomcat与SSL和APR时遇到了问题。
背景:Tomcat 7、Java 7、OpenSSL、一些有效的x509证书。
我的https连接器:
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true"
SSLVerifyClient="require" SSLVerifyDepth="3"
SSLCertificateFile="${catalina.home}/security/server.pem"
SSLCertificateKeyFile="${catalina.home}/security/server.key"
SSLCertificateChainFile="${catalina.home}/security/trust.pem"
SSLCACertificateFile="${catalina.home}/security/trust_ca.pem"
/>
PKI树:
ROOT -> CA_intermediate -> CA4Servers -> server (tomcat)
-> serv2Cert
-> CA4People -> people1Cert
一个拥有两个证书(people1Cert和serv2Cert)的Windows PC客户端,这两个证书存储在Windows密钥库(Windows-MY)中。
trust.pem包含ROOT、CA_intermediate、CA4Servers和tomcat pem编码的公钥。 trust_ca.pem包含除了tomcat证书之外的所有trust.pem内容。
我的需求:
访问 https://tomcat.server:8443/
,浏览器弹出一个证书选择对话框,只显示一个证书:serv2Cert。我选择该证书并成功进入网页。如果我选择其他证书,则服务器会呈现错误页面。
我的问题: 当我打开证书选择对话框时,我看到了2个证书:serv2Cert和people1Cert。这两个证书都可以让我进入网页! 如果我更改SSLVerifyDepth或trust_ca.pem以仅限制客户端证书为serv2Cert,我将收到SSL错误,如未知的CA或未知的证书
我已经尝试过一些SSLVerifyDepth值,如1,2,3,4。只有“3”让我登录到服务器。如果我从trust_ca.pem中删除除了ROOT之外的所有CA证书,我可以使用两个客户端证书(people1Cert和serv2Cert)登录。
我将非常感谢任何关于此问题的帮助,对我的英语表达不好表示抱歉,提前致谢。最好的问候。