keytool -genkeypair -alias server -keyalg RSA -validity 365 -keystore server.keystore -dname "CN=127.0.0.1,OU=icesoft,O=icesoft,L=Haidian,ST=Beijing,c=cn" -storepass 123456 -keypass 123456 keytool -genkeypair -alias client -keyalg RSA -validity 365 -keystore client.keystore -dname "CN=client,OU=icesoft,O=icesoft,L=Haidian,ST=Beijing,c=cn" -storepass 123456 -keypass 123456
从服务端与客户端证书库中导出证书
keytool -export -v -alias client -keystore client.keystore -storepass 123456 -rfc -file client.cer keytool -export -v -alias server -keystore server.keystore -storepass 123456 -rfc -file server.cer
server.cer 即是根CA
把服务端与客户端证书分别导入客户端与服务端信任库
keytool -import -v -alias server -file server.cer -keystore client.truststore -storepass 123456 keytool -import -v -alias client -file client.cer -keystore server.truststore -storepass 123456
将客户端与服务端证书分别导入到服务端与客户端证书库
keytool -import -v -alias client -file client.cer -keystore server.keystore -storepass 123456 keytool -import -v -alias server -file server.cer -keystore client.keystore -storepass 123456
至此 java 服务可用的jks类型的证书生成完成。
将jks证书转化为 pem 格式 nginx 可用证书过程如下
1 jks 转为 pkcs12
keytool -importkeystore -srckeystore client.keystore -destkeystore client-keystore.p12 -srcstoretype jks -deststoretype pkcs12 -deststorepass 123456 -destkeypass 123456
2 pkcs12 中提取 私钥
openssl pkcs12 -in client-keystore.p12 -nodes -nocerts -out client.key
3 pkcs12 中提取证书
openssl pkcs12 -in client-keystore.p12 -nodes -nokeys -clcerts -out client.crt