3

这是我在这个论坛的第一个问题,请提前接受我的歉意。我在使用 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 密钥库 (Windows-MY) 中具有 2 个证书的 Windows pc 客户端: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,我会收到诸如未知 ca未知证书之类的 SSL 错误

我已经尝试过一些 SSLVerifyDepth 值,例如 1、2、3、4。只有“3”让我登录服务器。如果我从 trust_ca.pem 中删除除 ROOT 之外的所有 CA 证书,让我使用两个客户端证书(people1Cert 和 serv2Cert)登录。

我会为此提供任何帮助,对不起我的英语不好,提前谢谢你。最好的祝福。

4

1 回答 1

2

You can't do this with Tomcat. It is very inflexible about SSL. Note that you are configuring for the entire Tomcat container, not a single web app. I recommend you put an Apache HTTP in front of Tomcat, i.e. as a reverse proxy. Apache HTTPD lets you configure every aspect of SSL, including acceptable client identities, right down to the level of individual directories.

于 2012-06-14T22:00:07.723 回答