提问者:小点点

纯超文本传输协议tomcat的Apache ssl前端提供不安全的内容


我们已经将Apache设置为纯超文本传输协议jBoss(tomcat)的ssl前端

<VirtualHost *:5555>
    ServerName my.server.com

    SSLEngine on
    SSLCertificateFile /x.crt
    SSLCertificateKeyFile /x.pem
    SSLProxyEngine on
    ...
    ...
    ProxyPass / http://my.server:8080/
    ProxyPassReverse / http://my.server.com:8080/
</VirtualHost>

在我们的jsp中,我们有这样的东西:

<link href="/css/my.css" rel="stylesheet" type="text/css">

当我们从

https://my.server.com:5555

告诉我们此页面的浏览器有不安全的内容,因为它将从

http://my.server.com:5555/css/my.css

我不想在href中使用绝对URL。我可以以某种方式告诉tomcat使用apache中的https而不在tomcat中设置ssl吗?或者是在两个Apache中设置ssl的最佳组合

正如德克所指出的,我已经尝试了解决方案,但仍然不起作用。

服务器. xml

<Connector port="8080" protocol="HTTP/1.1" enableLookups="false" proxyPort="5555" scheme="https" secure="true" />

我仍然得到关于不安全内容的错误。是因为struts1.1不使用request. getSchem()还是因为Apache和Tomcat之间的通信是纯超文本传输协议,Apache认为

<link href="/css/my.css" rel="stylesheet" type="text/css">

应从

http://my.server.com:5555/css/my.css

在将其发送回浏览器之前?

提前感谢


共1个答案

匿名用户

我猜问题是您的(tomcat)服务器认为它仍然存在于超文本传输协议地址(您可以通过查看标头和超文本标记语言来确认这一点)。

因此,它在页面中包含对超文本传输协议地址的引用,而不知道请求来自https版本。

假设你想要所有流量https(超文本传输协议路径被阻止和/或tomcat绑定到localhost)-你想检查http://tomcat.apache.org/tomcat-7.0-doc/proxy-howto.html如何告诉tomcat它不是生活在它可以看到的地址-而是在你从apache暴露给互联网的地址(即前门)。

您追求的是proxyName、proxyPort以及方案和安全。

例如见http://kb.vmware.com/selfservice/microsites/search.do?language=en_US备选案文4和3