Estou com dificuldades para obter um certificado cliente x509 a ser encaminhado para o Tomcat do Apache usando o mod_proxy.
A partir de observações e da leitura de alguns logs, parece que o certificado x509 do cliente está sendo aceito pelo Apache. Mas, quando o Apache faz uma solicitação SSL para o Tomcat (que tem clientAuth="want"), não parece que o certificado x509 do cliente é passado durante o handshake SSL.
Existe uma maneira razoável de ver o que o Apache está fazendo com o certificado cliente x509 durante seu handshake com o Tomcat?
Aqui está o ambiente com o qual estou trabalhando:
Apache / 2.2.3
Tomcat / 6.0.29
Java / 6.0_23
OpenSSL 0.9.8e
Aqui está minha configuração SSL do Apache VirtualHost:
<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>
Então aqui está o meu conector SSL Tomcat:
<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"
/>
Poderia haver problemas com a Renegociação SSL?
Poderia haver problemas com o Truststore em nossa instância do Tomcat? (Estamos usando um Truststore não padrão que possui CAs de organizações parceiras.)
Existe log melhor para o que está acontecendo internamente com o Apache para SSL? Como o que está acontecendo com o certificado do cliente ou porque ele não está encaminhando o certificado quando os gatos perguntam por um?
Qualquer ajuda razoável seria muito apreciada.
Obrigado pelo seu tempo.