本文引薦了網上其他小盆友的文章,加上一點自己多次失敗的心得,若有得罪請小噴。
必要的軟件(版本隨意):
1.Tomcat
2.Jdk
3.openssl
第一步:配置JDK和Openssl到環境變量Path中,具體方法可自行百度
第二步:生成證書
1、創建一個目錄,進入cmd命令行下,通過cd命令進入該目錄
2、在指定的目錄下運行命令:openssl?genrsa?-out?server.key?1024生成服務器密鑰文件。
如果目錄下生產server.key的文件,并且文件大小不為0,則說明成功。
如果沒成功,查看輸出的內容中是否有提示“\usr\local\ssl\openssl.cnf”找不到的問題,如果遇到這個問題,說明你并沒有按照第四步的要求將openssl設置到path中,解決的辦法有2個,第一個完成第四步openssl的path設定,第二個是將openssl的bin目錄下的文件“openssl.cfg”修改個名字,然后在c盤下創建“\usr\local\ssl\”目錄,將文件復制進去。
3、再運行命令:openssl?req?-new?-out?server.csr?-key?server.key根據密鑰文件生成簽署文件。
其中各個設置項中,除了Common Name其它的各項都可以為空,不過為了后期你好辨別證書,最好不要設置空,其中Common Name的值必須是你的服務器ip或者是域名,本機測試的話可以用localhost,但是如果要通過移動設備來訪問就不能設置成localhost。
4、再運行命令:openssl?genrsa??-out?ca.key?1024生成客戶端密鑰文件。
5、再運行命令:openssl?req??-new?-x509?-days?365?-key?ca.key?-out?ca.crt生成客戶端的簽署文件。
填寫的內容和第三步一致即可,其中organizationName必須和第三步的一致
6、在當前目錄下創建demoCA文件夾,并在demoCA下創建文件index.txt和serial,serial內容為01,index.txt為空,以及文件夾newcerts
注意:serial沒有后綴名,執行完第六步后請修改openssl.cnf文件中的dir的值,更改為新建的demoCA下,否則第七小步會讓你報錯報的痛不欲生。(僅限linux系統,windows系統即使修改了也會報錯,未找到好的解決方法)
7、在命令行中輸入:openssl?ca?-in?server.csr?-out?server.crt?-cert?ca.crt?-keyfile?ca.key讓客戶端的簽署證書能夠被網站服務器的簽署證書認識
8、運行命令openssl?pkcs12?-export?-in?server.crt?-inkey?server.key?-out?server.p12把服務端簽署證書轉換瀏覽器可以識別的PCS12格式,密碼使用上面輸入的密碼“123456”。
9、運行命令java?-cp?jetty-5.1.10.jar?org.mortbay.util.PKCS12Import?server.p12??server.jks,使用jetty中的PKCS12Import工具類完成轉換,密碼同上.(jetty-5.1.10.jar需要放置到當前文件夾中)
如果出現錯誤:說明你的jetty-5.1.10.jar沒有復制到命令行的當前文件夾下。
第三步:配置Tomcat打開https
<connector port="8443"? ? ? protocol="org.apache.coyote.http11.Http11Protocol"
SSLEnabled="true"? maxThreads="150" ???? scheme="https" secure="true"? clientAuth="false"
keystoreFile="D:/apache-tomcat-6.0.35/webapps/ROOT/ca/server.p12"??keystorePass="123456" ???? keystoreType="PKCS12"
truststoreFile="D:/apache-tomcat-6.0.35/webapps/ROOT/ca/server.jks"??truststorePass="123456" ???? truststoreType="JKS"/>
注意:keystoreFile、keystorePass為文件生成的位置和生成證書時輸入的密碼。
Ps:若出現無法連接到x.x.x.x服務器,有以下幾種情況:
1)所有涉及到填寫ip的步驟,ip未填寫正確
2)代碼中springmvc給攔截了,需要放開證書所在目錄下的權限,如下圖
最后附上引薦的文章鏈接(里面有所需要的工具):www.cnblogs.com/janken/p/3726017.html