有时候拿到一个证书压缩包,里面包含着各种格式的证书,有.jks的,就是没有.crt和.key证书。
所以,需要将.jks的证书转换成nginx所需要的.crt和.key证书。
比如有一个abc.com.jks
- 查看.jks文件中有哪些内容
keytool -list -keystore abc.com.jks -
将”.jks”转为”.pkcs12”(PKCS12格式的证书库)
keytool -importkeystore -srckeystore abc.com.jks -destkeystore abc.com.pkcs12 -deststoretype PKCS12 -
提取2张证书
openssl pkcs12 -in abc.com.pkcs12 -nokeys -clcerts -out abc.com-ssl.crt
openssl pkcs12 -in abc.com.pkcs12 -nokeys -cacerts -out abc.com-ca.crt
abc.com-ssl.crt是SSL证书,abc.com-ca.crt是中级证书,俩个合并到一起才是nginx服务器所需要的证书,这个非常重要。假如仅用一个,尽管在浏览器中可以使用,但是在程序中调用的时候,假如用了validate ssl功能的话,就会报错。
- 合并证书
cat abc.com-ssl.crt abc.com-ca.crt > abc.com.crt
此时abc.com.crt是一个完成的证书 -
提取私钥
openssl pkcs12 -nocerts -nodes -in abc.com.pkcs12 -out abc.com.key
至此,.crt和.key证书转换完成。