我在运行tomcat 7的ec2实例上提供内容。我在tomcat配置中将所有流量路由都路由到8443,并安装了有效证书。当我显式放置https://website.com:443时,该站点可以很好地加载,但是当我放置http://website.com时,它应使用端口443路由到https,但它使用的是端口8443。有人知道为什么会这样吗?我在另一台服务器上有完全相同的配置,但是我有两个不想表现出来的新服务器。

在我的tomcat server.xml中,我有:

<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
               maxThreads="150" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS"
               sslEnabledProtocols="TLSv1,TLSv1.1,TLSv1.2"
               ciphers="TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,
               TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,
               TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_RC4_128_SHA,
               TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA256,
               TLS_RSA_WITH_AES_256_CBC_SHA,SSL_RSA_WITH_RC4_128_SHA"
               keystoreFile="conf/cert.p12"
               keystorePass="password"
               keystoreType="PKCS12" />


并在web.xml中:

<security-constraint>
 <web-resource-collection>
 <web-resource-name>Protected Context</web-resource-name>
 <url-pattern>/*</url-pattern>
 </web-resource-collection>
 <!-- auth-constraint goes here if you requre authentication -->
 <user-data-constraint>
 <transport-guarantee>CONFIDENTIAL</transport-guarantee>
 </user-data-constraint>
 </security-constraint>

最佳答案

找到了答案,原来我必须将TCP上的所有流量从8443路由到8443。客户端正在请求端口80,根据我的负载均衡器配置路由到8080,以供tomcat提供内容,tomcat将请求转换为请求端口8443。

8443并没有路由回tomcat服务器上的8443,因此它最终陷入了死胡同。希望有一天能对别人有所帮助。

10-06 06:10