使用SSL

时间:2015-09-14 15:16:29

标签: java jsp tomcat ssl

我使用Intellij IDEA开发了一个Web应用程序,并且我使用了IDE的Build函数来生成WAR文件。我的应用程序的web.xml包含以下代码段:

<security-constraint>
    <web-resource-collection>
        <web-resource-name>sslTestApp</web-resource-name>
        <url-pattern>*</url-pattern>
    </web-resource-collection>
    <user-data-constraint>
        <transport-guarantee>CONFIDENTIAL</transport-guarantee>
    </user-data-constraint>
</security-constraint>

以便我的应用程序中的每个页面都使用SSL保护。

我还使用了keytool,我在conf/server.xml中的端口8443上启用了HTTPS,如官方Tomcat文档中所述。

当我从IDE启动项目时,它在端口8443上启用SSL时运行良好但如果我将.war文件放在tomcat的webapps目录中,请重新启动服务器并导航到https://localhost:8443/testApplication,我收到ERR_TIMED_OUT错误。

如果我编辑已部署的应用程序的web.xml并删除上述段,从而允许应用程序在默认端口8080上运行,则应用程序可以顺利运行。

因此,使用Intellij两个端口都可以工作,但是如果我手动部署应用程序,则只有8080正常工作。我错过了什么吗?

2 个答案:

答案 0 :(得分:1)

似乎IntellijIdea部署和手动之间的区别是应用程序的上下文路径。 Intellij想法默认以root应用程序运行应用程序,因此你可以在没有上下文路径的情况下访问它。

尝试在web.xml上修改此/testApplication/*的url-pattern,构建war工件并手动将其部署到Tomcat

<web-resource-collection>
    <web-resource-name>sslTestApp</web-resource-name>
    <url-pattern>/testApplication/*</url-pattern>
</web-resource-collection>

答案 1 :(得分:0)

如果其他人可能遇到同样的问题,解决方案是明确设置密钥的位置和server.xml中的密钥别名,如下所示:

<Connector port="8443" protocol="HTTP/1.1"
           maxThreads="150" SSLEnabled="true" scheme="https" secure="true" keystoreFile="C:\mykeystore"
           keyAlias="mykey"
           clientAuth="false" keystorePass="yourPassword" sslProtocol="TLS" />