2012-06-14 41 views
3

这是我在这个论坛的第一个问题,请提前接受我对任何错误的道歉。 我在使用SSL和APR配置tomcat时遇到问题。tomcat ssl apr x509

上下文: 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 PC客户端在Windows密钥库(Windows的MY):people1Cert和serv2Cert

trust.pem include ROOT,CA_int中间,CA4Servers和tomcat pem编码的公钥。 trust_ca.pem all of trust.pem but tomcat cert。

我想要什么: 转到https://tomcat.server:8443/,浏览器会显示我一个证书的证书选择对话框:serv2Cert,我选择它,进入网页成功地。如果我选择另一个证书,服务器会给我一个错误页面。

我的问题: 当我拿到证书选择器对话框时,我看到两个证书:serv2Cert和people1Cert(?)。他们都让我去网页! 如果我改变SSLVerifyDepth或trust_ca.pem到客户端证书限制为仅serv2Cert,我得到这样未知CA未知的证书

我已经与一些SSLVerifyDepth值试图像1,2 SSL错误, 3,4。只有“3”才能让我登录到服务器。如果我从trust_ca.pem中删除了所有CA证书,但删除了ROOT,则让我使用两个客户端证书(people1Cert和serv2Cert)进行登录。

我会对此有所帮助,对不起我的可怜的英语,提前谢谢你。最好的祝福。

回答

2

你不能用Tomcat来做到这一点。 SSL非常不灵活。请注意,您正在配置整个Tomcat容器,而不是单个Web应用程序。我建议你将Apache HTTP放在Tomcat前面,即作为反向代理。 Apache HTTPD允许您配置SSL的每个方面,包括可接受的客户端身份,直至各个目录的级别。