tomcat ssl apr x509

3
这是我在论坛上的第一个问题,请事先接受我的道歉,如果有任何错误。我在配置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)登录。

我将非常感谢任何关于此问题的帮助,对我的英语表达不好表示抱歉,提前致谢。最好的问候。

1个回答

2

使用Tomcat无法实现这一点。它对SSL非常不灵活。请注意,您正在为整个Tomcat容器进行配置,而不是单个Web应用程序。我建议您在Tomcat前面放置一个Apache HTTP服务器,即作为反向代理。 Apache HTTPD允许您配置SSL的每个方面,包括可接受的客户端身份验证,直到每个目录的级别。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接