iOS Mobile Push Gateway设置 - openssl命令实现

时间:2014-07-09 21:54:07

标签: pubnub

当我的应用在后台时,我想使用移动推送网关发送推送消息。我按照这个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

1 个答案:

答案 0 :(得分:1)

  1. -node应该是-nodes(这意味着&#34;没有des&#34;)

  2. 切勿在文件名中使用大于/小于(&lt;或&gt;)。它在Unix(重定向)中具有特殊含义。当在说明书中使用时,它们基本上意味着,&#34;取代&lt;&lt;和&gt;用你自己的价值,省略&lt;和&gt;&#34;。

  3. 例如,这应该可以正常工作:

    cd /tmp
    openssl pkcs12 -in developerTest.p12 -out newDevCert.pem -nodes
    

    如果上述情况有效,请告诉我。