使用Apache代理到Tomcat的相互TLS

时间:2017-11-21 20:59:47

标签: apache tomcat ssl reverse-proxy mutual-authentication

我正在使用的设置涉及一个Apache服务器,它充当tomcat服务器的代理,该服务器为多个Web应用程序提供服务。我已经在apache上启用了相互TLS,我可以成功连接到我的一个tomcat Web应用程序并验证客户端证书。但是,我想更进一步......在我的ssl.conf中,我有一个默认的HTTPS VirtualHost配置,如下所示:

<VirtualHost *:443>
   ....
   SSLEngine on
   SSLCertificateFile /path/to/www_yoursite_com.crt
   ....
   #other SSL options...
</VirtualHost>

在我的modproxy.conf中,我有如下配置:

ProxyPass /webApp1 https://localhost:1234/webApp1
ProxyPassReverse /webApp1 https://localhost:1234/webApp1

ProxyPass /webApp2 https://localhost:1234/webApp2
ProxyPassReverse /webApp2 https://localhost:1234/webApp2

其中1234是在tomcat的server.xml文件的连接器元素上配置的https端口。

假设我只想要webT1的mTLS,这个配置的问题是我的浏览器需要客户端证书,即使我正在访问webApp2,换句话说我想只为一个Web应用程序启用mTLS。更好的是,我想为我的Web应用程序中的特定URL启用mTLS(这是否可能?),例如,当有人点击https://myserver.com/webApp1/test/mtlsEndpoint而不是https://myserver.com/webApp1/test/otherEndpoint时,我需要mTLS。

是否可以在我的ssl.conf上使用另一个用于SSL的VirtualHost配置来实现此目的?我明天要测试这个(试图用另一个将mTLS代理到我的webApp1的VirtualHost配置来实现这个)但是我想在这里也应该问一下,以避免反复试验和重新发明轮子这可能比我想的更容易吗?

1 个答案:

答案 0 :(得分:0)

是的,您只需要webApp1webApp2的单独SSL指令。可以在Apache中配置SSL指令直到目录级别。