Apache не перенаправляет сертификат клиента x509 в Tomcat через mod_proxy

У меня возникают трудности при получении сертификата клиента x509 для пересылки в Tomcat из Apache с помощью mod_proxy.

Из наблюдений и прочтения нескольких журналов кажется, что сертификат клиента x509 принимается Apache. Но когда Apache делает запрос SSL к Tomcat (который имеет clientAuth="want"), это не похоже на то, что сертификат клиента x509 передается во время рукопожатия ssl.

Есть ли разумный способ узнать, что делает Apache с сертификатом клиента x509 во время его рукопожатия с Tomcat?

Вот среда, с которой я работаю: 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>

Тогда вот мой коннектор 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"
 />

Могут ли быть проблемы с пересмотром SSL?

Могут ли быть проблемы с Truststore в нашем экземпляре Tomcat? (Мы используем нестандартное хранилище доверенных сертификатов с центрами сертификации партнерской организации.)

Есть ли лучшая регистрация для того, что происходит внутри с Apache для SSL? Например, что происходит с сертификатом клиента или почему он не пересылает сертификат, когда tomcats запрашивает его?

Любая разумная помощь будет принята с благодарностью.

Спасибо за ваше время.

1 ответ

Решение

Apache генерирует новый сеанс SSL для соединения с внутренним сервером Tomcat, поэтому данные сертификата клиента не передаются; система с сертификатом больше не является клиентом.

Если у вас все в порядке с незашифрованным соединением между Apache и устройством Tomcat, используйте прокси-соединение AJP (ProxyPass / ajp://x.x.x.x:8009/) вместо SSL и добавление SSLOptions +ExportCertData директива в Apache, должна передавать данные сертификата Tomcat. Там больше информации о передаче информации о сертификате здесь.

Другие вопросы по тегам