普通的http tomcat的Apache ssl前端给出了不安全的内容

时间:2012-07-13 14:54:32

标签: apache tomcat mod-proxy

我们已将Apache设置为普通http 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

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

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

我不想在href中使用绝对URL。我能以某种方式告诉tomcat在没有tomcat的设置ssl的情况下从apache使用https吗?或者是在Apache和Apache中设置ssl的最佳组合。 Tomcat的?

我已经尝试过Dirk指出的解决方案,但它仍然没有用。

server.xml中

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

我仍然收到有关不安全内容的错误。是因为struts 1.1不使用request.getScheme(),还是因为Apache和Tomcat之间的通信是普通的http和Apache认为

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

应该从

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

在将其发回浏览器之前?

提前谢谢

1 个答案:

答案 0 :(得分:3)

我猜这个问题是你的(tomcat)服务器认为它仍然存在于http地址(你可以通过查看标题和HTML来确认)。

因此它在页面中包含对http地址的引用,不知道https版本中的请求。

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

你所追求的是proxyName,proxyPort以及scheme和secure。

请参阅http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2007800的选项4和3。