前提:nginx作爲服務端,java httpclient作爲客戶端
nginx需要增加nginx ssl的模塊:
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-openssl=/usr/local/openssl
此時,可能還需要解決make時,openssl路徑的問題,參考:
http://blog.csdn.net/u013091013/article/details/53640318
************************************指令 開始**************************************************
=======================================================
===================== 生成nginx證書 ===================
=======================================================
=====================根證書====================
1)創建根證私鑰
openssl genrsa -out root-key.key 1024
2)創建根證書請求文件
openssl req -new -out root-req.csr -key root-key.key
3)自籤根證書
openssl x509 -req -in root-req.csr -out root-cert.cer -signkey root-key.key -CAcreateserial -days 730
=====================服務端====================
4)生成服務端key
openssl genrsa -out server-key.key 1024
5)生成服務端請求文件
openssl req -new -out server-req.csr -key server-key.key
6)生成服務端證書
openssl x509 -req -in server-req.csr -out server-cert.cer -signkey server-key.key -CA root-cert.cer -CAkey root-key.key -CAcreateserial -days 730
=====================客戶端====================
7)生成客戶端key
openssl genrsa -out client-key.key 1024
8)生成客戶端請求文件
openssl req -new -out client-req.csr -key client-key.key
9)生成客戶端證書(root證書,rootkey,客戶端key,客戶端請求文件這4個生成客戶端證書)
openssl x509 -req -in client-req.csr -out client-cert.cer -signkey client-key.key -CA root-cert.cer -CAkey root-key.key -CAcreateserial -days 730
10)生成客戶端p12格式根證書
openssl pkcs12 -export -clcerts -in client-cert.cer -inkey client-key.key -out client.p12
密碼:client123456
=======================================================
=====================生成tomcat證書====================
===tomcat-root.truststore 和 tomcat-server.p12 ========
=======================================================
=====================ca====================
1).根據CA證書生成truststore JKS文件 root.truststore
//這一步只針對雙向認證,單向不需要
keytool -keystore tomcat-root.truststore -keypass root123456 -storepass root123456 -alias ca -import -trustcacerts -file root-cert.cer
密碼:root123456
=====================服務端====================
1).導出.p12文件 server.p12
(根據命令提示,輸入server.key密碼,創建p12密碼)
openssl pkcs12 -export -in server-cert.cer -inkey server-key.key -out tomcat-server.p12 -name "server"
密碼:server123456
2).將.p12 文件導入到keystore JKS文件 server.keystore
(這裏srcstorepass後面的server123456爲server.p12的密碼deststorepass後的server123456爲keyStore的密碼)
keytool -importkeystore -v -srckeystore tomcat-server.p12 -srcstoretype pkcs12 -srcstorepass server123456 -destkeystore tomcat-server.keystore -deststoretype jks -deststorepass server123456
密碼:server123456
=======================================================
================ java http client ====================
=======================================================
keytool -import -v -alias trustsrv -file root-cert.cer -keystore trustsrv.jks -storepass trust123456
keystore:client.p12
truststore:trustsrv.jks*************************************指令 結束**************************************************
參考:http://blog.csdn.net/qq315737546/article/details/52864220
https://www.jianshu.com/p/045f95c008a0