我在运行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>
答案 0 :(得分:1)
找到答案,原来我必须通过TCP将所有流量从8443路由到8443.客户端请求端口80,路由到8080每个我的负载均衡器配置为tomcat提供内容,tomcat正在转向请求进入请求端口8443.
8443在tomcat服务器上没有被路由回到8443,所以它刚刚结束了。希望有一天能帮助别人。
答案 1 :(得分:1)
使用transport-guarantee
CONFIDENTIAL
默认情况下,这是您的连接器端口。运行curl -vs http://website.com
进行确认。
您可以将http / 8080连接器redirectPort
设置为443
,但这意味着您选择使用ELB重定向。然后本地Tomcat重定向将开始失败,因为没有任何内容在443上本地监听,只有ELB会这样做。