步骤:
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:\soft\apache-tomcat-8.5.46\name.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端口。
第五步:暂略,后期补充