这是我在这个论坛的第一个问题,请提前对任何错误表示歉意。 我在使用SSL和APR配置tomcat时遇到问题。
上下文: 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
Windows密钥库中存在2个证书的Windows PC客户端(Windows-MY):people1Cert和serv2Cert
trust.pem 包括ROOT,CA_intermediate,CA4Servers和tomcat pem编码的公钥。 trust_ca.pem 所有trust.pem但tomcat证书。
我想要的是什么:
转到https://tomcat.server:8443/
,浏览器向我显示带有一个证书的证书选择器对话框:serv2Cert,我选择它并成功进入网页。如果我选择其他证书,服务器会向我显示错误页面。
我的问题: 当我获得证书选择器对话框时,我看到2个证书:serv2Cert和people1Cert(?)。他们俩都让我进入网页! 如果我更改SSLVerifyDepth或trust_ca.pem以将客户端证书限制为仅限于serv2Cert,我会收到SSL错误,例如未知ca 或未知证书
我已经尝试了一些SSLVerifyDepth值,如1,2,3,4。只有“3”让我登录服务器。如果我从trust_ca.pem删除所有CA证书但是ROOT,让我使用两个客户端证书(people1Cert和serv2Cert)登录。
我会对此提出任何帮助,对不起我的英语不好,请提前谢谢。最好的问候。
答案 0 :(得分:2)
你不能用Tomcat做到这一点。它对SSL非常不灵活。请注意,您要配置整个Tomcat容器,而不是单个Web应用程序。我建议你把一个Apache HTTP放在Tomcat前面,即作为反向代理。 Apache HTTPD允许您配置SSL的每个方面,包括可接受的客户端身份,直到各个目录的级别。