Apache tomcat 9 SSL 连接器:必须在浏览器上第一次尝试时手动输入 https://

Apache tomcat 9 SSL 连接器:必须在浏览器上第一次尝试时手动输入 https://

提前感谢你的帮助。

我已经设置了一个 apache tomcat 9 环境,以便使用 SSL 证书访问我的网站。问题是,我需要它能够通过在浏览器中输入 mysite.com 来访问该网站,但直到我手动输入“https:// mysite. com” 才起作用,但只有在我第一次输入 https:// 之后,我才能访问 mysite.com 并自动转到“https:// mysite. com”。

我需要让用户从第一次尝试就可以访问它,而无需手动输入 https://

对于服务器(oracle linux 7)防火墙,我正在转发并允许访问某些端口,如下所示:

#  firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens3
  sources:
  services: dhcpv6-client ssh
  ports: 22/tcp 8080/tcp 443/tcp 5901/tcp 80/tcp 55555/tcp 9090/tcp 8443/tcp
  protocols:
  masquerade: no
  forward-ports: port=443:proto=tcp:toport=8443:toaddr=
    port=80:proto=tcp:toport=8443:toaddr=
  source-ports:
  icmp-blocks:
  rich rules:

对于“conf/server.xml”中的 apache 连接器,我将其配置如下:

 <Connector port="8443"
            maxHttpHeaderSize="8192"
            maxThreads="150"
            minSpareThreads="25"
            maxSpareThreads="75"
            enableLookups="false"
            disableUploadTimeout="true"
            acceptCount="100"
            scheme="https"
            secure="true"
            SSLEnabled="true"
            clientAuth="false"
            sslProtocol="TLS"
            keyAlias="vennii"
            keystoreFile="keystorefile.jks"
            keystorePass="keystorepassword" />

我非常感激任何能给我的帮助!再次感谢!

答案1

据互联网,至少,你似乎需要一个conf/server.xml带有redirectPort语句的 HTTP 连接器:

<!-- HTTP Connector -->
<Connector port="8080"
           ...
           redirectPort="8443"
           ... >

请注意一些建议protocol="HTTP/1.1"声明后面也包括port

您可能还需要在conf/web.xml显然在任何 servelet-mapping 标签之后)重定向整个应用程序:

<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>

笔记

  • 请注意...并非字面意思(如上)。它们表示任何其他相关语句的占位符。

  • 不要忘记重新启动 Tomcat 来应用您的更改。

  • 如果您不想在 URL 中指定端口(即仅使用 eghttp://example.comhttps://example.com),则应使用 port80443而不是80808443

  • 请记住http://example.com,、https://example.com和都可以被视为单独的地址http://www.example.comhttps://www.example.com应如此处理。

相关内容