通过openssl生成nginx和tomcat的https通讯双向证书

前提: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

你可能感兴趣的:(https,证书)