证书
HTTPS 需要SSL证书,如果没有,可以自己使用Java数据证书管理工具(keytool)生成
1. 生成证书
- 打开命令行,根据自身情况更改以下命令后,回车:
keytool -genkey -v -alias 填写证书别名 -keyalg RSA -validity 3650 -keystore 填写证书路径
keyalg: 证书算法,RSA
validity:证书有效时间,10年
- 根据提示输入,需要格外注意的是,填写的密钥口令,在下一步中的配置中需要用到,如图:
2. tomcat配置
将上一步生成好的证书文件,放入到tomcat服务器中,打开tomcat安装目录,找到conf下的server.xml文件,搜索Http11NioProtocol关键字(不同版本,配置不同,这里使用的是8.5的版本),找到如下图:
解开注释,更改配置:
<Connector port="https端口(默认443)" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true">
<SSLHostConfig>
<Certificate certificateKeystoreFile="证书文件路径"
certificateKeystorePassword="密钥口令"
type="RSA" />
</SSLHostConfig>
</Connector>
运行tomcat即可使用https访问了.但是此时还是可以使用http访问项目,可以通过配置强制访问https,来实现使用http访问时,通过重定向访问https
强制访问HTTPS
- 在tomcat中的server.xml文件中,根据redirectPort关键字找到以下代码:
更改redirectPort属性值,将值改为上面配置的https端口 - 在项目中的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>
完成配置后,那么访问项目中所有的路径,都将使用https