一、證書生成
1、生成服務器證書
(1)打開打開命令控制台,進入jdk的bin目錄
cd D:\Program Files\jdk1.6.0_45\bin
(2)keytool為Tomcat生成證書(“-validity 36500”證書有效期,36500表示100年,默認值是90天)
keytool -genkey -v -alias tomcat -keyalg RSA -keystore E:\tomcat.keystore -validity 36500
2、生成客戶端證書
keytool -genkey -v -alias mykey -keyalg RSA -storetype PKCS12 -keystore E:\mykey.p12
3、讓服務器信任客戶端證書
(1)由於不能直接將PKCS12格式的證書庫導入,必須先把客戶端證書導出為一個單獨的CER文件,使用如下命令:
keytool -export -alias mykey -keystore E:\mykey.p12 -storetype PKCS12 -storepass 123456 -rfc -file E:\mykey.cer
(2)將該文件導入到服務器的證書庫,添加為一個信任證書使用命令如下:
keytool -import -v -file E:\mykey.cer –keystore E:\tomcat.keystore
(3)通過 list 命令查看服務器的證書庫,可以看到兩個證書,一個是服務器證書,一個是受信任的客戶端證書:
keytool -list -keystore E:\tomcat.keystore
4、讓客戶端信任服務器證書
把服務器證書導出為一個單獨的CER文件提供給客戶端,使用如下命令:
keytool -keystore E:\tomcat.keystore -export -alias tomcat -file E:\tomcat.cer
5、經過上面操作,生成如下證書:
其中 tomcat.cer 提供給客戶端,tomcat.keystore供服務器使用
二、證書使用
1、服務器tomcat的配置
(1)打開Tomcat根目錄下的/conf/server.xml,找到Connector port="8443"配置段,修改為如下:
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="E:/tomcat.keystore" keystorePass="123456" truststoreFile="E:/tomcat.keystore" truststorePass="123456" />
注釋掉
<!--<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />-->
(2)測試服務端,IE瀏覽器輸入訪問地址
但由於是自簽名的證書,所以瀏覽器會警告我們不安全,選擇繼續:
可以看到能成功訪問了(地址欄“證書錯誤”,此時數據已經是使用HTTPS傳輸了)
2、導入服務器公鑰證書(tomcat.cer)
由於是自簽名的證書,為避免每次都提示不安全。這里雙擊tomcat.cer安裝服務器證書。
注意:將證書填入到“受信任的根證書頒發機構”
再次重新訪問服務器,會發現沒有不安全的提示了,同時瀏覽器地址欄上也有個“鎖”圖標。
至此,就完成了配置。
注:由於jdk自帶的keytool生成的簽名屬於弱簽名算法(SHA-1),但是,SHA-1已經過時因而不再推薦使用。新證書使用了更強的簽名算法(比如SHA-256)。SHA-1的證書將從2017開始不再被主流瀏覽器廠商視為安全的。