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個字元