方便測試, 這裏自己搭建一個服務器, 使用tomcat。在這裏就不一一說了。
生成證書, 這裏使用keytool工具, java自帶的。打開終端, 輸入:
keytool -genkeypair -alias server -keyalg RSA -keysize 2048 -storetype PKCS12 -keystore /Users/xxx/Documents/cer/newcer/server.p12
接下來會要求輸入密碼, 這裏使用123456, 和一些其他信息
您的名字與姓氏是什麼?
[Unknown]: server
您的組織單位名稱是什麼?
[Unknown]: server
您的組織名稱是什麼?
[Unknown]: server
您所在的城市或區域名稱是什麼?
[Unknown]: server
您所在的省/市/自治區名稱是什麼?
[Unknown]: server
該單位的雙字母國家/地區代碼是什麼?
[Unknown]: CN
CN=server, OU=server, O=server, L=server, ST=server, C=CN是否正確?
[否]: y
同樣方式, 修改名稱, 生成一個客戶端證書。
打開tomcat的conf/server.xml , 修改
<Connector port="8111" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
爲
<Connector SSLEnabled="true" SSLProtocol="TLSv1+TLSv1.1+TLSv1.2"
clientAuth="true" keystoreFile="/Users/xxxx/Documents/cer/server.keystore"
keystorePass="123456" maxThreads="150" port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
scheme="https"
secursslEnabledProtocolse="true"
truststoreFile="/Users/xxxx/Documents/cer/client.p12" truststorePass="123456"/>
clientAuth, 是否需要進行雙向認證。keystoreFile, 服務端證書位置, truststoreFile信任的客戶端證書位置。
測試證書的話, 直接把客戶端證書導入瀏覽器, 或者鑰匙庫, 在瀏覽器上面測試就ok。
方便測試, 這裏寫一個接口https://192.168.3.210:8443/dynamicWebProject/login/map.form, 返回一個map。
在證書沒有導入之前, 顯示如圖。
導入證書之後:
到這裏, 就ok啦。