在Tomcat的bin目录下打开命令窗口(以下操作均在服务器上完成)
1.制作服务器端秘钥库
在命令窗口中输入下面命令:
keytool -genkey -v -alias tomcat -keyalg RSA -keystore D:\tomcat.keystore -validity 36500 -ext SAN=dns:localhost,ip:XXX.XXX.XXX.XXX
ip地址填写服务器的ip。
2.制作客户端秘钥库
在命令窗口中输入下面命令:
keytool -genkey -v -alias mykey -keyalg RSA -storetype PKCS12 -keystore D:\mykey.p12 -validity 36500
3.客户端证书导入服务端密钥库
由于不能直接将p12导入,需要先从客户端密钥库导出证书,再将导出的证书导入服务端密钥库。
3.1导出证书
在命令窗口中输入下面命令:
keytool -export -alias mykey -keystore D:\mykey.p12 -storetype PKCS12 -storepass 123456 -rfc -file D:\mykey.cer
3.2导入服务端密钥库
在命令窗口中输入下面命令:
keytool -import -v -file D:\mykey.cer -keystore D:\tomcat.keystore
4.导出服务端密钥库证书
在命令窗口中输入下面命令:
keytool -keystore D:\tomcat.keystore -export -alias tomcat -file D:\tomcat.cer
5.配置tomcat,找到conf目录下的server.xml文件,增加如下配置
<Connector port=”443″ protocol=”org.apache.coyote.http11.Http11Protocol”
maxThreads=”150″ SSLEnabled=”true” scheme=”https” secure=”true”
clientAuth=”false” sslProtocol=”TLS” keystoreFile=”D:/tomcat.keystore”
keystorePass=”123456″ />
注意事项:
- 这里配置的443端口要根据网站的实际情况进行配置,如果原来的网站是默认端口(80),则配置443。
- 如果原来的访问地址中有端口号(8089),升级为https后,还想用原来的8089端口,那么这里的443就改为8089。同时访问地址就变成了htts://XXX.XXX.XXX.XXX:8089。
- 若想满足原有的网站地址(http://XXX.XXX.XXX.XXX:8089)访问后自动跳转到htts://XXX.XXX.XXX.XXX:8089,参照下图进行配置,同时操作此文档的第八步(web.xml修改)。
6.安装客户端密钥库
双击mykey.p12文件
7.安装服务端证书
双击打开tomcat.cer文件
8.修改web.xml配置,实现http自动跳转https
<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>
9.防火墙开通访问端口
备注:
如果找不到原来的入站规则,也可以自己新增入站规则。
10.重启tomcat服务