SSLSocket的口令/密码在Python(SSLSocket passphrase/passwo

2019-07-04 11:02发布

我一直在寻找到做的是iOS推送通知服务,为最近我的应用程序之一。 它有一个Python 2.7后端所以我想这样做在Python而不是PHP(或其他任何东西)。

我有一个发送通知代码和设备接收它,但是我每次运行它要求我手动输入PEM文件中的“密码短语”的代码。

这不是理想的,因为我想这是所有自动在服务器上,当它需要发送一个通知,它应该只是把它。 我无法找到的文档的Python 2.7,让我自动从一个变量中设置的密码短语时,连接东西。

如果有人知道如何在Python 2.7或任何其他的想法做到这一点,我将非常感激。

下面是一个代码片段:

certfile = 'devPEM.pem'
apns_address = ('gateway.sandbox.push.apple.com', 2195)

s = socket.socket()
sock = ssl.wrap_socket(s, ssl_version=ssl.PROTOCOL_SSLv3, certfile=certfile)
sock.connect(apns_address)

提前致谢。

Answer 1:

所以答案为BorrajaX建议是在提示时键没有设置密码。 然而,由于(至少在我的Mac)希望将密码设置为最少4个字符,这是不可能的。

解决这个问题的步骤如下:

  1. 在创建开发人员门户网站的证书。
  2. 下载并在钥匙串访问本地打开证书
  3. 导出证书的私钥从钥匙串访问.p12文件(我把它命名为aps_key.p12)。
  4. 运行中.P12键以下内容:
    openssl pkcs12 -nocerts -out aps_key.pem -in aps_key.p12
  5. 输入密码(我们将在分条)。
  6. 运行以下剥离的密码:
    openssl rsa -in aps_key.pem -out new_aps_key.pem
  7. 将来自开发人员中心为.pem文件下载的.CER:
    openssl x509 -in aps.cer -inform der -out aps.pem
  8. 合并具有以下密钥和证书。质子交换膜的文件:
    cat aps.pem new_aps_key.pem > final_aps.pem
  9. 现在,您可以删除所有其他文件,除了final_aps.pem

final_aps.pem然后文件,代码工作上面而不会提示输入口令/密码短语。

这是一个有用的网站,我发现的代码从.pem文件删除密码: http://www.sslshopper.com/article-most-common-openssl-commands.html

编辑:如果你不需要证书,并在同一个文件的密钥,你可以忽略的步骤8,并使用aps.pemnew_aps_key.pem文件。



文章来源: SSLSocket passphrase/password in Python