指定 CSR 文件时 OpenSSL pkcs12 导出失败
OpenSSL pkcs12 export fails when specifying CSR file
我正在尝试创建一个 p12 文件以与 PushSharp 一起使用以发送 iOS 推送通知。一年前,我使用了这个确切的过程来更新我们的证书,并且效果很好;但现在它在最后一步失败了。
这是我正在做的事情:
- 在钥匙串访问中创建一个证书签名请求,作为一个名为
CertificateSigningRequest.certSigningRequest
的文件
- 从 Keychain Access 导出私钥,将文件另存为
private_key.p12
- 转到 developer.apple.com,使用第 1 步中的 CSR 文件创建生产 Apple 推送服务证书,将文件下载为
aps.cer
- 运行 shell 中的以下命令(与在其他 Stack Overflow 帖子中找到的命令几乎相同):
openssl x509 -in aps.cer -inform DER -out app_cert.pem -outform PEM
openssl pkcs12 -nocerts -out private_key.pem -in private_key.p12
openssl rsa -out private_key_noenc.pem -in private_key.pem
openssl pkcs12 -export -in app_cert.pem -inkey private_key_noenc.pem -certfile CertificateSigningRequest.certSigningRequest -name "MyAppName" -out pushsharp.p12
最终的 openssl 命令失败并出现此错误:
unable to load certificates
我无法弄清楚我做错了什么;这一切都在一年前运行良好的脚本中。通过删除 -certfile CertificateSigningRequest.certSigningRequest
参数,我能够使 openssl pkcs12 -export
命令成功,但我相信由此生成的 p12 文件不适用于 PushSharp。
不要尝试将 CSR 文件作为 -certfile
的参数。
-certfile
可用于向商店添加额外的证书。
例如 app_cert.pem 的 CA 证书链:
openssl pkcs12 -export -in app_cert.pem -inkey private_key_noenc.pem \
-certfile ca_certificates.pem -name "MyAppName" -out pushsharp.p12
如果对应的证书已经存在,通常不需要使用CSR。
我正在尝试创建一个 p12 文件以与 PushSharp 一起使用以发送 iOS 推送通知。一年前,我使用了这个确切的过程来更新我们的证书,并且效果很好;但现在它在最后一步失败了。
这是我正在做的事情:
- 在钥匙串访问中创建一个证书签名请求,作为一个名为
CertificateSigningRequest.certSigningRequest
的文件
- 从 Keychain Access 导出私钥,将文件另存为
private_key.p12
- 转到 developer.apple.com,使用第 1 步中的 CSR 文件创建生产 Apple 推送服务证书,将文件下载为
aps.cer
- 运行 shell 中的以下命令(与在其他 Stack Overflow 帖子中找到的命令几乎相同):
openssl x509 -in aps.cer -inform DER -out app_cert.pem -outform PEM
openssl pkcs12 -nocerts -out private_key.pem -in private_key.p12
openssl rsa -out private_key_noenc.pem -in private_key.pem
openssl pkcs12 -export -in app_cert.pem -inkey private_key_noenc.pem -certfile CertificateSigningRequest.certSigningRequest -name "MyAppName" -out pushsharp.p12
最终的 openssl 命令失败并出现此错误:
unable to load certificates
我无法弄清楚我做错了什么;这一切都在一年前运行良好的脚本中。通过删除 -certfile CertificateSigningRequest.certSigningRequest
参数,我能够使 openssl pkcs12 -export
命令成功,但我相信由此生成的 p12 文件不适用于 PushSharp。
不要尝试将 CSR 文件作为 -certfile
的参数。
-certfile
可用于向商店添加额外的证书。
例如 app_cert.pem 的 CA 证书链:
openssl pkcs12 -export -in app_cert.pem -inkey private_key_noenc.pem \
-certfile ca_certificates.pem -name "MyAppName" -out pushsharp.p12
如果对应的证书已经存在,通常不需要使用CSR。