tomcat配置ssl证书实现网站https访问

一.申请证书

申请过程略。
fileauth.txt、.jks秘钥文件和秘钥密码

二、配置

  1. 工程代码
    (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协议。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值