HTTP端口被阻止时将HTTP重定向到https

时间:2018-09-25 10:38:15

标签: java port tomcat8

我们有一个运行在Apache Tomact 8.0.36中的Java Web应用程序。 配置了HTTP端口80,并配置了HTTPS端口443。如下所示,在web.xml中配置了重定向到HTTPS的操作:

                 <security-constraint>
                         <web-resource-collection>
                         <web-resource-name>restricted methods</web-resource-name>
                             <url-pattern>/*</url-pattern>
                             <http-method>OPTIONS</http-method>
                             <http-method>DELETE</http-method>
                             <http-method>TRACE</http-method>
                          </web-resource-collection>
                          <auth-constraint/>
                </security-constraint>

现在,端口80在已部署应用程序且未发生重定向到HTTPS的服务器中已被阻止。 当HTTP端口被阻止时,有什么方法可以使HTTPS重定向正常工作?

2 个答案:

答案 0 :(得分:1)

  

当HTTP端口被阻止时,有什么方法可以使HTTPS重定向正常工作?

我想您的意思是被服务器或其前面的防火墙阻止。

基本上,答案是否。

为了使服务器中的任何形式的HTTP重定向都能正常工作,服务器必须能够在端口80上获得传入的连接HTTP请求。(然后它将发送3xx响应,告诉浏览器使用不同的URL。该URL将是HTTPS URL。)

如果HTTP请求在服务器获得请求之前被阻止,那么自然就无能为力。

此外,如果您尝试做一些聪明的事情,例如将端口80映射到防火墙中的端口443,最终将向HTTPS服务器端口发送HTTP请求。这将失败,因为HTTPS服务器需要SSL / TLS协商的东西。可能只是关闭连接。

如果确实需要支持此功能,则需要在服务器前面实现HTTP / HTTPS代理,然后将重定向发送回用户的浏览器。但这有点愚蠢。

如果您确实要强迫人们使用HTTPS,请执行以下一项操作:

  • 让网络管理员打开服务器上的端口80,并以正常方式在服务器中实现3xx重定向。
  • 保持服务器上的端口80关闭并且不发布http:// URL。如果某些用户尝试使用http:// URL,则他们将获得“拒绝连接”或“连接超时” ...或浏览器选择向用户描述这些情况。

如果您试图逃避不合作的管理员的网络封锁,我建议您不要打扰。他们大概有其原因。

答案 1 :(得分:0)

您尝试过吗?

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