前言:
最近在做華為NB-IoT接口開發,需要用到雙向認證,就去學了一下。
然后我將過程總結了一下。
相關華為論壇鏈接:http://developer.huawei.com/ict/forum/thread-25457.html
里面一些ca.jks和outgoing.CertwithKey.pkcs12相關步驟能看懂就看,看不懂沒關系。

2、使用keytool命令生成證書tomcat.keystore
keytool -genkey -v -alias tomcat -keyalg RSA -keystore tomcat.keystore -validity 36500
以下是命令的參數介紹
keytool
-genkey
-alias tomcat(別名)
-keypass 123456(別名密碼)
-keyalg RSA(算法)
-keysize 1024(密鑰長度)
-validity 365(有效期,天單位)
-keystore tomcat.keystore(指定生成證書的位置和證書名稱)
-storepass 123456(獲取keystore信息的密碼)

由於不能直接將PKCS12格式的證書庫導入,必須先把客戶端證書導出為一個單獨的CER文件


完成之后通過list命令查看服務器的證書庫,
可以看到兩個證書,一個是服務器證書,一個是受信任的客戶端證書:
keytool -list -v -keystore tomcat.keystore
由於是雙向SSL認證
(1)、客戶端也要驗證服務器證書,因此,必須把服務器證書添加到瀏覽器的“受信任的根證書頒發機構”
(2)、服務器也要驗證客戶端提供的證書,因此,必須把client.p12證書添加到瀏覽器的“個人”證書里面(這步非常關鍵)。
由於不能直接將keystore格式的證書庫導入,必須先把服務器證書導出為一個單獨的CER文件

2、將tomcat.cer證書導入到受信任的根證書頒發機構,點擊導入,按照步驟添加
然后一直下一步,最后選“是”
3、將client.p12添加到個人證書
然后一直下一步,最后選“是”。密碼是之前生成客戶端證書時候的密碼。
五、配置tomcat的server.xml
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" SSLEnabled="true" scheme="https" secure="true" clientAuth="true" sslProtocol="TLS" keystoreFile="C:\Program Files\Apache Software Foundation\Tomcat 8.5\tomcat.keystore" keystorePass="123456" truststoreFile="C:\Program Files\Apache Software Foundation\Tomcat 8.5\tomcat.keystore" truststorePass="123456" />