一.申请证书
申请过程略。
fileauth.txt、.jks秘钥文件和秘钥密码
二、配置
- 工程代码
(1)上传证书文件(用于申请证书文件),文件位置:
WebRoot/.well-known/pki-validation/fileauth.txt
(2)web.xml增加如下代码:
<security-constraint>
<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>
注:
设置TRANSPORT-GUARANTEE=CONFIDENTIAL保护敏感资源
为了保护Web应用中的敏感数据,防止资源的非法访问和保证传输的安全性,Java Servlet
2.2规范定义了安全约束(Security-Constraint)组件,它用于指定一个或多个Web资源集的安全约束条件;用户数据约束(User-Data-Constraint)组件是安全约束组件的子类,它用于指定在客户端和容器之间传输的数据是如何被保护的。用户数据约束组件还包括了传输保证(Transport-Guarantee)组件,它规定了客户机和服务器之间的通信必须是以下三种模式之一:NONE、INTEGRAL、CONFIDENTIAL。NONE表示被指定的Web资源不需要任何传输保证;Integral表示客户机与服务器之间传送的数据在传送过程中不会被篡改;Confidential表示数据在传送过程中被加密。大多数情况下,INTEGRAL或CONFIDENTIAL是使用SSL实现。
本文就是通过实验验证当设置transport-guarantee=CONFIDENTIAL后,原来被保护的资源,将自动从HTTP协议,转到HTTPS协议。
-
tomcat
(1)将申请的.jks秘钥文件放在tomcat的conf目录下。(2)修改文件:conf/server.xml(修改位置见modify标注)
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="443" /><!--modify:改成跳转到443端口 -->
<!-- A "Connector" using the shared thread pool-->
<!--
<Connector executor="tomcatThreadPool"
port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
-->
<!-- Define a SSL HTTP/1.1 Connector on port 8443
This connector uses the JSSE configuration, when using APR, the
connector should be using the OpenSSL style configuration
described in the APR documentation -->
<!--modify:这段默认是注释掉的,放开。
Port:端口,https默认端口号是443,http默认端口号是80
SSLEnabled:开启ssl
keystoreFile:秘钥文件路径;
keystorePass:创建秘钥文件时输入的密码
sslEnabledProtocols、ciphers用于解决火狐报错问题:在服务器密钥交换握手信息中 SSL 收到了一个弱临时 Diffie-Hellman 密钥。 错误代码:SSL_ERROR_WEAK_SERVER_EPHEMERAL_DH_KEY
-->
<Connector port="443" protocol="org.apache.coyote.http11.Http11Protocol" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="conf/AAAA.jks"
keystorePass="123456"
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"
/>
<!-- Define an AJP 1.3 Connector on port 8009 -->
<!--modify:改成跳转到443端口 -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="443" />
(3)重启tomcat
三、效果
使用http访问,默认跳转到https路径。
原文参考:
https://www.cnblogs.com/xuegqcto/p/9116712.html
https://www.trustasia.com/news-201801-tomcat-deployment
https://www.cnblogs.com/blog5277/p/7524067.html
https://blog.csdn.net/baidu_18607183/article/details/51611720