Go语言无法读取需要密码访问的PEM文件问题(failed to parse private key)

原文来自:http://blog.csdn.net/hekejun19861107/article/details/22897429
最近开始做苹果的推送功能,服务端连接apns的时候需要加密连接,对应就需要通过苹果开发者平台生成对应的pns的证书和对应的私钥,然后通过openssl命令转换成PEM格式,本人也是急于完成手头的工作,没有去深入研究openssl命令的使用方法,按网上的教程直接把p12 的私钥转成了pem,对应还上了密码。这时候问题就来了,Go提供的tls库中的LoadX509KeyPair并没有传入密码的选项,只能传入对应的证书和私钥。琢磨半天找到这方法,记录一下:

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个字符

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值