【发布时间】:2017-11-21 20:59:47
【问题描述】:
我正在使用的设置涉及一个 Apache 服务器,它充当服务于多个 Web 应用程序的 tomcat 服务器的代理。我在 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 端口。
假设我只想要 webApp1 的 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 配置来实现这一点)但我认为我也应该在这里询问以避免反复试验和重新发明轮子,这可能比我想象的更容易?
【问题讨论】:
标签: apache tomcat ssl reverse-proxy mutual-authentication