Tomcat / Spring SSL配置

时间:2011-05-17 15:48:13

标签: spring tomcat ssl ssl-certificate

我正在尝试将我的Spring应用程序配置为使用从CA购买的SSL证书。我按照Tomcat 6.0 configuration的说明进行操作,并将密钥导入我的Tomcat密钥库,并取消注释server.xml中的SSL连接器。当我启动Tomcat时,我看到连接器在Tomcat日志中的端口8443上启动,但是当我转到https://example.com:8443或http://example.com:8443或https://example.com时(没有空格) - 我没有发布链接的声誉),它超时了。我需要做什么其他配置才能为我的Spring应用程序启用SSL。我是否必须更改应用程序配置?

我还想通过SSL只有一些URL(登录,编辑个人资料等)。我怎样才能在Spring配置中允许这个?如果我必须通过SSL访问所有URL,那就没问题,但不可取。我还没有找到任何特定于Spring的教程。

3 个答案:

答案 0 :(得分:0)

您需要做的是编辑server.xml文件以启用ssl。这是Tomcat的指南,请查看:

http://tomcat.apache.org/tomcat-6.0-doc/ssl-howto.html

为了以编程方式知道请求是否已通过端口80或443到达,您需要检查request.isSecure()返回的值。

为了完全保护网址,我建议您使用过滤器。

我不记得Spring如何处理所有这些问题,但我认为获取请求对象不会有任何问题。

希望有所帮助。

答案 1 :(得分:0)

根据@mschonaker引用的文档配置Tomcat之后,最简单的方法是在j_security_check中定义操作并编辑配置文件表单等,指定https:protocol,例如:在Facelet中,https://# {request.serverName}:8443#{request.contextPath} / j_security_check。然后,当用户点击登录按钮时,表单通过HTTPS发送POST,因此它们是安全的。

这将使您在HTTPS中继续进行剩余的会话:要返回HTTP但仍保持在同一会话中,只需提供指向完全指定的HTTP URL的链接,例如:在Facelet中,http://# {request.serverName}:8443#{request.contextPath} / 某个链接

如果您在阅读时想要保护其他页面,请在web.xml中为它们定义适当的security-constraint,user-data-constraint和transport-guarantee CONFIDENTIAL元素。

答案 2 :(得分:0)

关于第二点

我还想通过SSL只有一些URL(登录,编辑个人资料等)。 ???

您可以通过修改web.xml中的配置来确定它

  <security-constraint>
    <web-resource-collection>
        <web-resource-name>securedapp</web-resource-name>
       <!-- <url-pattern>/*</url-pattern> -->  <!--all pages-->
        <url-pattern>/yourapp/login</url-pattern>
        <url-pattern>/yourapp/edit</url-pattern>
    </web-resource-collection>
    <user-data-constraint>
        <transport-guarantee>CONFIDENTIAL</transport-guarantee>
    </user-data-constraint>
</security-constraint>

希望能帮到你