golang 不支持p12解析,所以需要转换成pem
网上有一些,但都不能实现自动转换(非交互模式)。以下是非交互模式的转换:
//生成临时文件cert.pem,注意passin 和 passout 选项
openssl pkcs12 -clcerts -nokeys -out cert.pem -in cert.p12 -passin pass:P12_PASS
//生成临时文件key.pem
openssl pkcs12 -nocerts -out key.pem -in cert.p12 -passin pass:P12_PASS -passout pass:TMP_PASS
//去掉key.pem的密码
openssl rsa -in key.pem -out key.unencrypted.pem -passin pass:TMP_PASS
//生成生成golang能处理的cert文件
cert, err := tls.LoadX509KeyPair(cert.pem, key.unencrypted.pem)
这样就生成golang能处理的证书了。
注:
P12_PASS: 生成p12文件时的密码
TMP_PASS:导出的临时密码,必须大于等于4个字符
有疑问加站长微信联系(非本文作者)