我使用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正常工作。我错过了什么吗?
答案 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" />