实施Apple推送通知时出现SSL错误

Hun*_*unt 10 python django apple-push-notifications

我正在尝试使用python和django实现Apple推送通知.

我正在使用以下库来实现它

http://leepa.github.com/django-iphone-push/

这是我创建发送消息的代码

from django.http import HttpResponse
from django.utils import simplejson
import json
from push.models import iPhone

def SendMessage(request,data):

        t = iPhone('XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX ') # 64 digit token
        t.send_message("hi") # at this line i am getting ERROR
        return HttpResponse(data,mimetype='application/javascript')
Run Code Online (Sandbox Code Playgroud)

settings.py

import os
PROJECT_ROOT = '/'

# Full path to the APN Certificate / Private Key .pem
IPHONE_SANDBOX_APN_PUSH_CERT = os.path.join(PROJECT_ROOT, "apns-dev-tubeteam.pem")
IPHONE_LIVE_APN_PUSH_CERT = os.path.join(PROJECT_ROOT, "apns-dev-tubeteam.pem")

# Set this to the hostname for the outgoing push server
IPHONE_SANDBOX_APN_HOST = 'gateway.sandbox.push.apple.com'
IPHONE_LIVE_APN_HOST = 'gateway.push.apple.com'

# Set this to the hostname for the feedback server
IPHONE_SANDBOX_FEEDBACK_HOST = 'feedback.sandbox.push.apple.com'
IPHONE_LIVE_FEEDBACK_HOST = 'feedback.push.apple.com'
Run Code Online (Sandbox Code Playgroud)

错误

[Errno 336265218] _ssl.c:337: error:140B0002:SSL routines:SSL_CTX_use_PrivateKey_file:system lib
Run Code Online (Sandbox Code Playgroud)

任何人都可以告诉我如何摆脱它.

Tom*_*ohl 16

我有同样的问题.事实证明这是一个简单的错误 - 我在IPHONE_SANDBOX_APN_PUSH_CERT中有一个错误,python无法找到我的证书.一旦我把它指向正确的位置,它就开始工作了.

请注意,您可能希望首先使用openssl命令行仔细检查证书,例如:

openssl x509 -text -in cert.pem
Run Code Online (Sandbox Code Playgroud)

这将为您提供有关您的证书,其有效性等的文本信息.

另外,请仔细检查证书文件的文件权限(python进程必须具有足够的权限才能访问它).

  • +1"无法找到证书".就我而言,它只是文件名中的拼写错误.真的感觉像`ssl.wrap_socket`可能会抛出一个简单的"找不到文件",而不是让ssl错误冒出来 (2认同)