当我的应用在后台时,我想使用移动推送网关发送推送消息。我按照这个tutorial几乎完成了它,但我无法将.p12文件转换为.pem。我可以成功导出.p12证书,但无法完成后续步骤,也许我错过了一些东西,但无法弄清楚。
很明显我需要在终端中运行openssl命令,如下所示:
openssl pkcs12 -in <EXPORTED_CERT_NAME.p12> -out <PEM_CERT_NAME.pem> -nodes
这是我的版本:
openssl pkcs12 -in <cert.p12> -out <newCert.pem> -nodes
cert.p12
是来自钥匙串的导出证书,newCert.pem
是新文件的名称。我已将它粘贴到终端并按下输入,但没有任何反应。只是收到此消息cert2.pem: No such file or directory
。
当我尝试使用此命令检查证书时:
openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert server_certificates_bundle_sandbox.pem -key server_certificates_bundle_sandbox.pem
收到此错误:
Error opening client certificate private key file server_certificates_bundle_sandbox.pem
2668:error:02001002:system library:fopen:No such file or directory:/SourceCache/OpenSSL098/OpenSSL098-50/src/crypto/bio/bss_file.c:356:fopen('server_certificates_bundle_sandbox.pem','r')
2668:error:20074002:BIO routines:FILE_CTRL:system lib:/SourceCache/OpenSSL098/OpenSSL098-50/src/crypto/bio/bss_file.c:358:
unable to load client certificate private key file
我错了什么?我的openssl代码中有什么问题,或者我需要在终端中做一些不同的事情吗?
更新3
a,版本
cd /tmp
openssl pkcs12 -in devKey.p12 -out newDevCert.pem -nodes
openssl pkcs12 -in devKey.p12 -out newDevCert.pem -nodes
Error opening input file devKey.p12
devKey.p12: No such file or directory
b,版本
在这种情况下,我没有机会输入密码,因为错误显示在openssl命令之后。
cd documents
openssl pkcs12 -in devKey.p12 -out samplePem.pem -nodes
Enter Import Password:
Mac verify error: invalid password?
更新2
我在名称
中没有< >
的情况下尝试过
openssl pkcs12 -in developerTest.p12 -out newDevCert.pem -node
似乎发生了一些事情
openssl pkcs12 -in developerTest.p12 -out newDevCert.pem -node
Usage: pkcs12 [options]
where options are
-export output PKCS12 file
-chain add certificate chain
-inkey file private key if not infile
-certfile f add all certs in f
-CApath arg - PEM format directory of CA's
-CAfile arg - PEM format file of CA's
-name "name" use name as friendly name
-caname "nm" use nm as CA friendly name (can be used more than once).
-in infile input filename
-out outfile output filename
....
-keysig set MS key signature type
-password p set import/export password source
-passin p input file pass phrase source
-passout p output file pass phrase source
-engine e use engine e, possibly a hardware device.
-rand file:file:...
load the file (or the files in the directory) into
the random number generator
-CSP name Microsoft CSP name
-LMK Add local machine keyset attribute to private key
但是当我尝试验证它仍然会出错:
Error opening client certificate private key file newDevCert.pem
850:error:02001002:system library:fopen:No such file or directory:/SourceCache/OpenSSL098/OpenSSL098-50/src/crypto/bio/bss_file.c:356:fopen('newDevCert.pem','r')
850:error:20074002:BIO routines:FILE_CTRL:system lib:/SourceCache/OpenSSL098/OpenSSL098-50/src/crypto/bio/bss_file.c:358:
unable to load client certificate private key file
更新(早期)
我已导出新的.p12
证书并再次尝试。如果我只是打开终端并运行此代码:
openssl pkcs12 -in <developerTest.p12> -out <newDevCert.pem> -node
出现此错误
-bash:developerTest.p12:没有这样的文件或目录
我将developerTest.p12
保存到我的Documents
文件夹中,所以当我尝试
cd documents
openssl pkcs12 -in <developerTest.p12> -out <newDevCert.pem> -node
我得到了一个不同的错误:
-bash: newDevCert.pem: No such file or directory
在这种情况下,我认为答案稍微接近一点,当我在Documents
文件夹中运行命令时,它找到导出的.p12,但是仍有问题。
确定PEM_CERT_NAME
可以是什么吗?
/ tmp版本:
cd /tmp
openssl pkcs12 -in <developerTest.p12> -out <newDevCert.pem> -node
-bash: developerTest.p12: No such file or directory
答案 0 :(得分:1)
-node应该是-nodes(这意味着&#34;没有des&#34;)
切勿在文件名中使用大于/小于(&lt;或&gt;)。它在Unix(重定向)中具有特殊含义。当在说明书中使用时,它们基本上意味着,&#34;取代&lt;&lt;和&gt;用你自己的价值,省略&lt;和&gt;&#34;。
例如,这应该可以正常工作:
cd /tmp
openssl pkcs12 -in developerTest.p12 -out newDevCert.pem -nodes
如果上述情况有效,请告诉我。