我做了以下步骤:
1)通过keytool
创建自签名证书
2)在server.xml中的8443端口上配置连接器
3)检查localhost:8080和localhost:8433是否可访问
4)在我的web.xml中添加了以下安全性约束
<security-constraint>
<web-resource-collection>
<web-resource-name>securedapp</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
当我转到http://localhost:8080/MyApp/
时,没有重定向到https://localhost:8443/MyApp/
。据我所知,对于传输保证为机密的URL使用HTTP的请求应该使用HTTPS自动重定向到同一个URL。
但是,我的应用仍然可以访问,并且可以使用HTTP和HTTPS。我正在使用Tomcat 6.0.36。 我错过了什么?
提前致谢。
答案 0 :(得分:2)
回答我自己的问题。
我发现此行为是由HTTP连接器的secure
标志引起的。我之前为测试目的设置了它,并且忘了它。
当HTTP连接器有secure="true"
并且浏览器中没有现有的JSESSIONID cookie时:
当HTTP连接器有secure="false"
时:
答案 1 :(得分:1)
实际上,此配置效果很好。使用这些设置,您将获得302 REDIRECT到https端口。在正常情况下,它是透明发生的(例如,在浏览器,邮递员中),这就是为什么它起作用。 如果您确实需要确定它是否可以按预期工作,则可以将CURL与详细输出配合使用
curl -v http://localhost:80/your_resources/
然后您将看到每个步骤并将命令重定向到
https://localhost:443/your_resources/