Tomcat使用Https协议
背景:
在一个项目上线的过程中,采用了阿里云的负载均衡,而不是nginx的负载均衡,所以需要配置tomcat支持https协议
1、生成keystore
1 keytool -genkeypair -alias "tomcat" -keyalg "RSA" -validity 90 -keystore "/root/tomcat.keystore"
"/root/tomcat.keystore" 生成的keystore位置和名称
-keyalg "RSA" 加密算法
-validity 90 有效天数
2、配置Tomcat(conf文件夹中的server.xml)
1 <Connector port="443" protocol="org.apache.coyote.http11.Http11Protocol" 2 maxThreads="150" SSLEnabled="true" scheme="https" secure="true" 3 clientAuth="false" sslProtocol="TLS" 4 keystoreFile="/root/tomcat.keystore" 5 keystorePass="tomcat" />
keystorePass为生成keystore时输入的密码
启动tomcat就可以以https访问了
3、https与http协议转换(有些页面需要使用https访问,有些页面使用http访问)
将
1 <Connector port="8080" protocol="HTTP/1.1" 2 connectionTimeout="20000" 3 redirectPort="8009" />
替换为
<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="443" />
4、页面强制使用https协议(例如:登录页面必须使用https协议)
在项目资源中的web.xml或tomcat/conf/web.xml文件中的</welcome-file-list>后加上: <web-resource-collection > <web-resource-name >SSL</web-resource-name> <url-pattern>/*</url-pattern><!-- 这里表示所有页面都必须使用https协议 --> </web-resource-collection> <user-data-constraint> <transport-guarantee>CONFIDENTIAL</transport-guarantee> </user-data-constraint> </security-constraint>