带有apache mod_proxy_wstunnel的Websocket到tomcat,带有javax.servlet.request.X509Certificate

时间:2017-03-15 18:08:39

标签: java apache tomcat websocket

这是我的情况:

浏览器和LT; --- HTTPS / WSS --->阿帕奇的httpd< --- HTTP / WS ---> Tomcat的(V7)

是否可以使用mod_proxy_wstunnel反向代理在Servlet过滤器中获取javax.servlet.request.X509Certificate?那是我的配置:

ProxyPass /ws ws://space4-20.<***>.ch:8080/ws nofailover=On ProxyPassReverse /ws ws://space4-20.<***>.ch:8080/ws ProxyPass / ajp://space4-20.<***>:8009/ nofailover=On ProxyPassReverse / ajp://space4-20.<***>:8009/

如果我直接连接到tomcat(没有apache),我可以像这样访问它:

request.getAttribute("javax.servlet.request.X509Certificate");

但是使用反向代理我没有任何属性。 是因为apache和tomcat之间没有SSL吗?但据我所知,这并不重要,因为如果我执行正常的HTTPS请求,我将获得tomcat中的所有SSL信息。我想那是因为我有这个:
SSLOptions +StdEnvVars +ExportCertData
但我认为mod_proxy_wstunnel不使用该配置。

有人能帮助我吗? 提前谢谢!

1 个答案:

答案 0 :(得分:0)

这是因为在apache和tomcat之间没有SSL。 对于&#34;正常&#34; HTTPS,您使用 AJP 而不是HTTP。 AJP将身份验证信息传递给Tomcat。

你的情况&#34;真的是: 浏览器与LT; --- HTTPS / WSS ---&GT;阿帕奇的httpd&LT; ---的 AJP / WS ---&GT; Tomcat的(V7)