使用JDK中的keytool生成服务器证书
1.创建服务器KeyStore
keytool -genkey -alias server_jks_cennavi -keyalg RSA -keystore d:\zs\server.jks -validity 3650
2.导出服务端证书
keytool -export -trustcacerts -alias server_jks_cennavi -file d:\zs\server.cer -keystore d:\zs\server.jks
3.创建客户端KeyStore
keytool -genkey -alias clinet_p12_cennavi -keyalg RSA -keystore d:\zs\client.p12 -validity 3650 -storetype PKCS12
4.导出客户端Cer证书
keytool -export -trustcacerts -alias clinet_p12_cennavi -file d:\zs\client.cer -keystore d:\zs\client.p12 -storetype PKCS12
5.交换导入服务端和客户端证书,作为双方信任证书。
将客户端证书导入服务端
keytool -import -trustcacerts -alias client_p12_cennavi -file d:\zs\client.cer -keystore d:\zs\server.jks
6.将服务端证书导入客户端
keytool -import -trustcacerts -alias server_jks_cennavi -file d:\zs\server.cer -keystore d:\zs\client.jks
Tomcat中配置的参数
1.Https设置 加入服务端证书 service.xml
<Connector protocol="HTTP/1.1"
port="8443" enableLookups="true"
disableUploadTimeout="true" acceptCount="100"
maxThreads="200" scheme="https" secure="true"
SSLEnabled="true" sslProtocol="TLS" clinetAuth="true"
keystoreFile="D:\zs\server.jks" keystorePass="jjo123"
truststoreFile="D:\zs\server.jks" truststorePass="jjo123" />
2.web.xml 设置 在文件的最后加入一下内容表示 将http请求强制转换成https请求
<login-config>
<auth-method>CLIENT-CERT</auth-method>
<realm-name>Client Cert Users-only Area</realm-name>
</login-config>
<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>