python: APNs SSLError

Я пытаюсь отправить push-уведомления на iPhone через python, как описано здесь, но я получаю следующую ошибку:

Traceback (most recent call last): File "<console>", line 1, in <module> File "/home/omat/CA/server/ca/models.py", line 193, in push c.connect((host_name, 2195)) File "/usr/lib/python2.6/ssl.py", line 307, in connect self.ca_certs) SSLError: [Errno 336265225] _ssl.c:337: error:140B0009:SSL routines: SSL_CTX_use_PrivateKey_file:PEM lib 

Ошибка возникает из модуля ssl python, поскольку трассировка говорит, но сообщение не поет мне. Любые идеи о том, что может быть неправильным?

Благодаря,

Omat

редактировать:

Используемый сертификат создается из сертификата и закрытого ключа следующим образом:

 openssl pkcs12 -clcerts -nokeys -out apns-dev-cert.pem -in apns-dev-cert.p12 openssl pkcs12 -nocerts -out apns-dev-key.pem -in apns-dev-key.p12 cat apns-dev-cert.pem apns-dev-key.pem > apns-dev.pem 

  • Psycopg2 Поддержка протокола Python не скомпилирована в
  • Клиент Python - SSL lib - проверка сертификата не выполнена
  • Добавить файл SSL CA с помощью urllib2
  • Веб-приложение висит в течение нескольких часов в ssl.py на self._sslobj.do_handshake ()
  • Python3 CGI HTTPS-сервер выходит из строя в Unix
  • Как отключить проверку имени хоста в запросах python
  • SSLError: сбой сброса оповещений sslv3
  • Неверная версия Python Smtp SSL для Linux
  • 2 Solutions collect form web for “python: APNs SSLError”

    Вот как я его работаю:

    Изнутри KeyChain экспортируйте следующие p12 формате p12 , не указывая пароль:

    • Сертификат Apple Development Push Services как cert.p12
    • primary key под Apple Development Push Services как pkey.p12

    В терминале перейдите в каталог, в котором вы экспортировали сертификаты и конвертируете файлы pem формат pem и объединяете их следующим образом:

     $ openssl pkcs12 -in pkey.p12 -out pkey.pem -nodes -clcerts $ openssl pkcs12 -in cert.p12 -out cert.pem -nodes -clcerts $ cat cert.pem pkey.pem > iphone_ck.pem 

    iphone_ck.pem – это необходимый вам сертификат.

    Я столкнулся с тем же сообщением об ошибке, используя PyAPN . В этом примере говорится, чтобы инициировать его следующим образом:

     apns = APNs(use_sandbox=True, cert_file='cert.pem', key_file='key.pem') 

    Оказывается, решение моей проблемы состояло в том, чтобы включить полный системный путь для каждого файла .pem:

     cert_path = os.path.join(os.path.dirname(__file__), 'cert.pem') key_path = os.path.join(os.path.dirname(__file__), 'key.pem') apns = APNs(use_sandbox=True, cert_file=cert_path, key_file=key_path) 
    Python - лучший язык программирования в мире.