hoo*_*knc 4 ssl tomcat x509 apache-2.2
我在使用 mod_proxy 将客户端 x509 证书从 Apache 转发到 Tomcat 时遇到了困难。
从观察和阅读一些日志来看,客户端 x509 证书似乎正在被 Apache 接受。但是,当 Apache 向 Tomcat(其中包含 clientAuth="want")发出 SSL 请求时,在 ssl 握手期间似乎没有传递客户端 x509 证书。
是否有一种合理的方法可以查看 Apache 在与 Tomcat 握手期间对客户端 x509 证书进行的操作?
这是我正在使用的环境:Apache/2.2.3 Tomcat/6.0.29 Java/6.0_23 OpenSSL 0.9.8e
这是我的 Apache VirtualHost SSL 配置:
<VirtualHost xxx.xxx.xxx.xxx:443>
ServerName xxx
ServerAlias xxx
SSLEngine On
SSLProxyEngine on
ProxyRequests Off
ProxyPreserveHost On
ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log
LogLevel debug
SSLProtocol all -SSLv2
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
SSLCertificateFile /usr/local/certificates/xxx.crt
SSLCertificateKeyFile /usr/local/certificates/xxx.key
SSLCertificateChainFile /usr/local/certificates/xxx.crt
SSLVerifyClient optional_no_ca
SSLOptions +ExportCertData
CustomLog logs/ssl_request_log \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
<Proxy *>
AddDefaultCharset Off
Order deny,allow
Allow from all
</Proxy>
ProxyPass / https://xxx.xxx.xxx.xxx:8443/
ProxyPassReverse / https://xxx.xxx.xxx.xxx:8443/
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
然后这是我的 Tomcat SSL 连接器:
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" address="xxx.xxx.xxx.xxx"
maxThreads="150" scheme="https" secure="true"
keystoreFile="/usr/local/certificates/xxx.jks" keypass="xxx_pwd"
clientAuth="want" sslProtocol="TLSv1" proxyName="xxx.xxx.xxx.xxx" proxyPort="443"
/>
Run Code Online (Sandbox Code Playgroud)
SSL 重新协商可能存在问题吗?
我们的 Tomcat 实例中的 Truststore 会不会有问题?(我们正在使用具有合作伙伴组织 CA 的非标准 Truststore。)
是否有更好的日志记录 Apache for SSL 内部发生的事情?比如客户端证书发生了什么,或者为什么当 tomcats 要求证书时它不转发证书?
任何合理的帮助将不胜感激。
感谢您的时间。
Apache 正在生成一个全新的 SSL 会话以连接到后端 tomcat 服务器,因此客户端证书数据未通过;带有证书的系统不再是客户端。
如果您对 Apache 和 Tomcat 设备之间的未加密连接没有问题,那么使用 AJP 代理连接 ( ProxyPass / ajp://x.x.x.x:8009/
) 而不是 SSL,并SSLOptions +ExportCertData
在 Apache 中添加指令,应该将证书数据传递给 Tomcat。在经过证书信息有更多的信息在这里。
归档时间: |
|
查看次数: |
10258 次 |
最近记录: |