Go语言无法读取需要密码访问的PEM文件问题(failed to parse private key)
2014-09-22 10:06
531 查看
原文来自: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个字符
最近开始做苹果的推送功能,服务端连接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个字符
相关文章推荐
- Go语言无法读取需要密码访问的PEM文件问题(failed to parse private key)
- Java解析DBF文件,错误Failed to parse Number: For input string: "-.---" 或读取不出数据或乱码问题都在这里解决
- Java解析DBF文件,错误Failed to parse Number: For input string: "-.---" 或读取不出数据或乱码问题都在这里解决
- win7 web开发遇到的问题-由于权限不足而无法读取配置文件,无法访问请求的页面
- win7 web开发遇到的问题-由于权限不足而无法读取配置文件,无法访问请求的页面
- .NET 使用OpenSSL生成的pem文件做为RSA Key时的读取问题
- 解决VMWare 9中提示“windows无法从无人参与应答文件读取<ProductKey>设置问题”
- 使用叶神模拟器无法访问本机服务器的问题(报错:java.net.ConnectException: failed to connect to /127.0.0.1 (port 5000) )
- 127.0.0.1无法访问,需要输入用户名和密码的问题
- ZZ:OpenSSL中产生RSA KEY以及读取PEM文件的问题
- Eclipse下文件读取的问题:Failed to reading file xxxxx
- win7 web开发遇到的问题-由于权限不足而无法读取配置文件,无法访问请求的页面
- win7 web开发遇到的问题-由于权限不足而无法读取配置文件,无法访问请求的页面
- c# 读取其他程序正打开的文件的时“正由另一进程使用,因此该进程无法访问该文件。"的问题解决方法
- 解决“使用驱动器F中的光盘前需要将其格式化 双击后提示:文件目录损坏且无法读取”问题
- 用流的方法解决“文件正由另一进程使用,因此该进程无法访问该文件” 的问题 FileStream
- C# System.IO.FileStream 读取被其他程序打开的文件提示“文件正由另一进程使用,因此该进程无法访问该文件。”
- ssd sftp传输文件问题出现 failed to open a secure file transfer session
- 关于windows2003共享文件的读取需要密码的问题
- VS保存和编译问题] 总是出现另一个程序正在使用此文件,进程无法访问