尝试对我的应用程序进行推送测试时,出现以下错误:
Traceback (most recent call last):
File "test.py", line 16, in <module>
wrapper.notify()
File "/usr/local/lib/python2.7/dist-packages/APNSWrapper-0.6.1-py2.7.egg/APNSWrapper/notifications.py", line 194, in notify
apnsConnection.connect(apnsHost, self.apnsPort)
File "/usr/local/lib/python2.7/dist-packages/APNSWrapper-0.6.1-py2.7.egg/APNSWrapper/connection.py", line 215, in connect
self.context().connect(host, port)
File "/usr/local/lib/python2.7/dist-packages/APNSWrapper-0.6.1-py2.7.egg/APNSWrapper/connection.py", line 161, in connect
self.connectionContext.connect((host, port))
File "/usr/lib/python2.7/ssl.py", line 331, in connect
self._real_connect(addr, False)
File "/usr/lib/python2.7/ssl.py", line 314, in _real_connect
self.ca_certs, self.ciphers)
ssl.SSLError: [Errno 336445449] _ssl.c:365: error:140DC009:SSL routines:SSL_CTX_use_certificate_chain_file:PEM lib
我的剧本看起来像:
#!/usr/bin/env python
from APNSWrapper import *
deviceToken = '****************************************************************'
# create wrapper
wrapper = APNSNotificationWrapper('cert.pem', True)
# create message
message = APNSNotification()
message.token(deviceToken)
message.badge(28)
# add message to tuple and send it to APNS server
wrapper.append(message)
wrapper.notify()
这个错误的原因是什么?
据我所知,我得到了同样的错误,因为我忽略了在openssl命令中使用
-x509
标志。According to the documentation,没有这个命令,openssl只生成一个“证书请求”,而不是一个实际的自签名证书,这正是我想要的。如果我错了,请纠正我。我只是把这个放在这里以防万一。
我以前在Python中没有遇到过这个特定的错误,但是看起来很像OpenSSL被.pem文件阻塞了——我推测您使用的.pem文件不是Python要求OpenSSL执行的正确格式。我打开了一个已知的.pem文件,用垃圾数据替换了我的个人识别信息和公钥/私钥,这样您就可以感受到非密码保护的.pem应该是什么样子。
PEM文件包含您的公钥和私钥。千万不要让别人看到,因为他们有能力看到你的私钥,然后可以冒充你或你的服务器!
注意:下面的代码列表是一组完全伪造的随机数据,用于演示.pem文件格式。即使是最偶然的验证,这个样本PEM也会失败,因为没有隐藏“This_IS_JUST_RANDOM_CHARACTERS”文本,其中应该有实际的密钥数据,而不仅仅是随机字符数据。
如果你的PEM有不同的格式(可能是二进制的?缺少公钥或私钥部分?此示例中没有多余的部分?)然后,您需要运行转换或从OS X中的Keychain Access导出的PKCS#12中重新导出您的PEM。转换步骤将根据您实际拥有的文件类型而有所不同,因此如果没有其他信息,我无法在那里为您提供任何指导,但我可以为您提供如何从Keychain重新导出PEM的说明在OS X中访问:
openssl pkcs12 -in FILENAME.p12 -out FILENAME.pem -nodes
再一次,这是基于你在问题中列出的错误代码的推测,但是试一下让我们知道事情的进展。
相关问题 更多 >
编程相关推荐