背景:因为在ssl证书使用时,java中常用的是keystore。而其他环境经常会用到pem格式的
操作:(linux环境下)
服务端:
1.生成keystore,注意CN的值必须是要发布服务的域名,不能是ip
keytool -genkey -alias server -dname "CN=www.test.com" -keyalg RSA -keystore server.store -storepass 123456 -keypass 123456
2.将生成的keystore转换为PKCS12
keytool -importkeystore -srckeystore server.store -destkeystore server.store.p12 -srcstoretype JKS -deststoretype PKCS12
3.转换pkcs12格式的秘钥库得到pem格式的私钥
openssl pkcs12 -nocerts -nodes -in server.store.p12 -out server-private-key.pem
4.从keystore中导出公钥证书
keytool -export -alias server -file server-pub.cer -keystore server.store -storepass 123456
5.转换cer格式证书到pem格式
openssl x509 -in server-pub.cer -inform DER -out server-pub.pem -outform PEM
6.转换普通pem格式到rsa的pem格式
openssl rsa -in server-private-key.pem -out server-private-key-new.pem
rsa格式pem
-----BEGIN RSA PRIVATE KEY----- lsjflsfjdlskd sdfksjldfjs .... .... ksjdflskd -----END RSA PRIVATE KEY-----
普通格式pem
-----BEGIN PRIVATE KEY-----
ksldfjs
ksdjflsdf
...
....
sfjlskjdfljf
ksdfjlsdkf
-----END PRIVATE KEY-----
客户端:与服务端生成方法相同