使用https访问tomcat下的系统(非springboot项目)以及将http强制映射到https

步骤:

1:使用JDK自带工具keytool生成密钥对(.keystore文件)

2:配置tomcat的server.xml,以便通过不同的协议访问tomcat

3:测试http和https链接

4:配置将http强制映射到https

5:配置客户端信任证书

第一步:

     可以参考我的另一篇文章https://blog.csdn.net/ITWANGBOIT/article/details/96475876

第二步:

  在tomcat的conf下的server.xml中进行如下配置:

    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
               
    <Connector port="8443" protocol="HTTP/1.1" connectionTimeout="20000" maxThreads="150" 
         SSLEnabled="true" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS"
       keystoreFile="D:softapache-tomcat-8.5.46 ame.keystore" keystorePass="httpshttps"/>

配置之后,既可以通过http的8080端口来访问tomcat,又可以通过https的8443端口来访问tomcat。

解释:

第三步:

打开浏览器,分别访问http://localhost:8080/HTTPS和https://localhost:8443/HTTPS,效果如下:

   这样以来,就说明你可以通过http的8080端口访问系统,又可以通过https的8443端口访问系统。

   但是有的系统,是只允许https去访问,当在地址栏里输入了http时,会自动转换成https

第四步:

  配置将http强制映射为https有两种方式:

(1):在tomcat的conf下的web.xml中进行如下配置

       <login-config>
           <!-- Authorization setting for SSL -->
           <auth-method>CLIENT-CERT</auth-method>
           <realm-name>Client Cert Users-only Area</realm-name>
       </login-config>
       <security-constraint>
           <!-- Authorization setting for SSL -->
           <web-resource-collection >
               <web-resource-name >SSL</web-resource-name>
               <url-pattern>/*</url-pattern>
           </web-resource-collection>
           <user-data-constraint>
               <transport-guarantee>CONFIDENTIAL</transport-guarantee>
           </user-data-constraint>
       </security-constraint> 

解释:

在web.xml中的具体位置和相关配置的意义:

(2):在项目(非springboot项目)的web.xml中进行如下配置

    <security-constraint>
        <web-resource-collection>
          <web-resource-name>Welcome to Tomcat</web-resource-name>
          <url-pattern>/*</url-pattern>
        </web-resource-collection>
        <user-data-constraint>
          <transport-guarantee>CONFIDENTIAL</transport-guarantee>
        </user-data-constraint>
     </security-constraint> 

解释:

在web.xml中的具体位置和相关配置的意义:

经过以上配置之后,当在浏览器地址栏里输入http://localhost:8080/HTTPS,并回车请求资源时,地址栏的地址将自动变成

https://localhost:8443/HTTPS。

第二步的配置中,有一个注意点如下:

强制将http映射为https的过程应该是这样的:

     当用户用http请求某个资源时,而该资源本身又被设置了必须要用https方式访问,此时Tomcat会自动重定向到这个redirectPort设置的https端口。    

第五步:暂略,后期补充

原文地址:https://www.cnblogs.com/hzcya1995/p/13302492.html