簡體   English   中英

ssl SSLError outines:SSL_CTX_use_certificate_chain_file:PEM lib

[英]ssl SSLError outines:SSL_CTX_use_certificate_chain_file:PEM lib

在嘗試對我的應用程序進行推送測試時,我收到以下錯誤:

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()

這個錯誤的原因是什么?

我之前沒有在Python中遇到過那個特定的錯誤,但它看起來非常像你的.pem文件中的OpenSSL - 我推測你使用的.pem文件不是Python問OpenSSL的正確格式去做。 我打開了一個已知的好.pem文件,用垃圾數據替換了我的個人識別信息和公鑰/私鑰,這樣你就可以了解非密碼保護的.pem應該是什么樣的。

PEM文件包含您的公鑰和私鑰。 永遠不要發布給他人看,因為他們有能力看到你的私鑰然后冒充你或你的服務器!

注意:以下代碼清單是一個完全偽造的隨機數據集,用於演示.pem文件格式。 考慮到不那么隱藏的“THIS_IS_JUST_RANDOM_CHARACTERS”文本應該有實際的密鑰數據而不是隨機字符數據,這個樣本PEM即使是最偶然的驗證也會失敗。

Bag Attributes
    friendlyName: Apple Development IOS Push Services: com.mycompany.myappidentifier
    localKeyID: 01 23 45 67 89 AB CD EF 01 23 45 67 89 AB CD EF 01 23 45 67 
subject=/UID=com.mycompany.myappidentifier/CN=Apple Development IOS Push Services: com.mycompany.myappidentifier/OU=ABC1234567/C=US
issuer=/C=US/O=Apple Inc./OU=Apple Worldwide Developer Relations/CN=Apple Worldwide Developer Relations Certification Authority
-----BEGIN CERTIFICATE-----
THIS_IS_JUST_RANDOM_CHARACTERS_90f0yGqSm7JmgJ0srvviZpn6cSMoCeymB
t449Y40dVKzDM809kpexmWuMrkjdnfaQmF15lYrpKOAu6t9sZPpFfIocovuW38pH
p4U9Rtt7TC4tVnMHYYk3Dsbu6lqcMeK9sp15Ffw8vcS9AHafNWeY9sjxe8oICcAt
mXV6RCcIjqADwf5yHS283SQ45K2DMQbOQ6ScMckLO1o6SC3VqWnkInMQPeVuLkbS
77BDaRF8X32pOLrwOKyn1CLJLvTDdOb9kWWBVSfvoZwCLinA99Pikc2Cmj0AUzPE
KHc4GvyqXzotjH9HsHnt8TNPEietXPZuILApztEEoAJwPhlJIiwdCkh66KlP7QJt
3l8iGCItGoMttokGGR99d7AaPbIwb7dZPjxc8TTBEoHXrHRrVCm4ogEazFiqfG5R
SCgwK4wyxtMxzgjaUJVq598i7QDmkcQxL8nPyqKvRxURuYMr37JZRFwMQpcmaNwD
Q7REjrz0DT3qZNZbEB4kSGy9Gcf3HfVZRfzlJV3jdOnw7ACvhB9r9uKdUW5U2Vrh
Sns6NVpXLHohtXOmWcrMVJfk4wvrmfj4zbj27MO4BVSushEI8f3lOzUY5RdQIA2v
UZfj47oADpxA0BnO5vysPZ4OcwLwQLoXTEFUiTHDkx7LxNXs0JhADiWnEh8w3c7u
OeGIYYDU713iBMEUC77kRGeOHzCNYSUG88vRl93b2AKvHM5TL9CFavAr9biSWTEJ
TCSvYNGv0BjZkmKgZkNQ0Th4Ip2JEBxS8uvBvR0oaF6zLZur3bc1Qi2W3lE7Ea15
aSZ4o1wMs3TeU8fNZHSCR6NtYNNRkqkoNNYZ4P7IoSafJSnV8sfxBc627jIlUJ7p
9Xrw0pbnSv2bjcvdZHDhX2bDBYb9mqvYAzgb08diOGEvF7B2H47ScL5RXPv5iPn1
CzeVCjuByc9hgQZVEoppzyXWpdBwsLgEsSgk1nCSpNItSFqvcu4QBDWeVb9wl44A
O0SX8rll0jlpbPrWggoGjp5ibJlVXJu70cezccOeturNjhJ4jOLk4yAZsGD10uv6
yjm4VGwhAzsXgZqaKT29FmIjLVJVfOgsgxAbGI1jgt9rp5kTJZCI2EXRAOOrAUsF
KUrwynHd9PXCWJLNLHL5nzusPBtRy6C2WXJZgeFYcZ7L7hQ60Fw3IeoyU8AD8GhE
x1Cv7GADu82kmFPXrkZJgRS6cbtDavMtG8iYCg5Vw8s8l2QglaxqdkXXxcH5TG6c
Ddcapm7BDpdrvJVwnCqQ8k4i8UlRYXrjYVqh81RSfVjhkfB1QRzBMwPSX1gN61wD
5m1yiWY9kMHHLhY2jux9rr5MwrRBZLhmjgERwJu89aGIW9cAVXSITZAONTzGI2Zx
g8L3U2lr7b4zcNuq6pNKuYwpzKrQUK5ou7HWectN9g91yqqmprCO3I8WZCq4W2F2
GYmwloL1YcoOFpfLSZHijAQOmwppz9VGNbqZn9F27xNUzQhddm8F06vICjQTflBH
caViw2GaKNLMJm2c4B7saOyqLbthyI59YkyrM9hTQK3fGqQpKJosgEQyFg4KZrRx
NlkYidUDYy5htWp4kFLW9QmRgoCLtqZyNIOUbdE4dxntPCcGjU5VSGa0ofpxZaMr
pVLC1GGP4r02yP6aZj04njKJmNrvHEK9sr8S452UVwyRIkIfoiBlCkmmRCVnELa8
sraVxhpwmLIQC1E4DCIyFH6pPi7VYOh5pZewBlAiFyaHRThVKBSn11dzl714qyqy
zQaNjHXLP4oWSAEgPHtimCpLgRhhZO2neOwI7ptW7n3WncvW92Fs1Q3FaGujVw0x
NkpEf4pHfUT4ZK4UdsQzVokyMhptMg03ZLNQ7mkNhkrAPmR5Y7K2zDYBtQ45WULg
97mCUJ3TCMffVFd3szYF
-----END CERTIFICATE-----
Bag Attributes
    friendlyName: Common Name From Keychain Access CSR Wizard
    localKeyID: AB CD EF 01 23 45 67 89 AB CD EF 01 23 45 67 89 AB CD EF 01 
Key Attributes: <No Attributes>
-----BEGIN RSA PRIVATE KEY-----
THIS_IS_JUST_RANDOM_CHARACTERS_1YKVrMNhmg68Qt026SWMxtaKiVtHG2yYS
V3gdLgqujtp4rpWONYoLQKhlW923yzrxYuSUhC8LiNDlAjicrJXZVj4vYhwdydSS
QBnDaxc5U2NYev0tCEbPTpYDERAsdE7WTBwaTuEyWEoqTsPQLucohKY2E7UzoZcZ
BttZaX0vLy3W7y22dSKtIghJMEy8MENjeJkET6Xaf4ozC7DNr2g1dBICPT42Hx77
GagtxA2OyxW7qkB8GTnOncXWDbli1y5eYIjb0GZNQVSmGEBl5ykNvhbzpqc53nfN
NJNMO1mEIaDo3GZIVfv3gpiNGpaplofix2DZJOaQBh4s0X3gwc3Y9f1Ta39tYdVh
h04JCDdliIfbjp4T6pDJQeebaBPczOne2gFHMOHGlxcfYbNzlqgBhzdoqH25nKN4
hThTUQioisjUrUayiyPkMAJFdKn37iff1XHOmCFEJqL7eMayeyLk55hWLLBi4Q7I
wUH9rbR2LnfXdCf25jyRbZQx3uKhjnwZrZL9Pg2OF9nvl1B1UnTtyOHP7uP989u1
qNiNIS347PLN2tvEIEaFQ26ESY9YpPhcpMWLpJEN6nyer1LcrRQfTPXnoqPKIEDc
KBnpPyvNxC7EeruwkwWbRdpuOPJ8hFKiY9SwSbJvPb4mBXmSo5mfKaZfy2IuJdTV
dTQ49Lq3rMDwYsRTAS6Id2I9lFruU5vXR7BtCP5u8QV480f6wU17IPn3mgezXtNU
R0SSEjVCGWQUZXvEmlLTnqD5T7IHlat7IbKvcaKp6skvJUFanKgCXn7PW6FzuQyF
QfbGEAmzEIq7UT83WOxCsbUR26kJutIejjcnZWZQ3tMG9wtZysYXkAiCDEMUdSZl
Y7h5oE5rVeYyT7SXtDhVnNeDmcqIO2VcHt7HFsVQVMUAalA9mnEMjHkxAbgp1mCo
NxdMzNb44IWAaSM6CmjjMt07GTJsjthXTreFoOm9oWGSIEo67piyIRJP8xmdOitB
ITLHC9h89kV4vfAJZrrCOxSlcsNADCAS1SJW6kzJn7CxVucnszKZ8sQdc8Xqvqsu
4CpFs1arZYZ3IE9dOY28LJuuegSBSf6EOTSHK5OOzL6IenrhTUbLSFQpoYF3yNo1
OfpoyVHltjCeqTHMQjhrY9cokfHsecRR8EZMAAxFDo3YvgVyLzvjvY114NMVkxHh
5sw7wL4xKE8UxzL4Eew1t8HjSlypLF7s5plq6wtOfEn9HYRKJVGYBT5x2oZm9m6b
rlVzKeASUuzOXBeNafwYOgXAFBq0i1lw7nkLfyZaeETfE00GxhceK6bnT0UfBMb5
rvU4Yz1pNhYvG4ZhKJYaiJvzQW6jSYFEyWh8hWPrSco42eMPYms0lxK9Fy4tbHuP
0XsjURq6aY9P6Cg1ugPM5ad3kOtr8MrJwRLmp94ucwJASuWXj48QH45sVaZbcsKU
ZwVfKpGke3urr9DtznZnv4QdBSlPhS3e4CihQDdhWZJMPxh1DNRrBWBn7xiOZqEm
oC7zbfjNtpvhOThz4MCDzJeCtGfI8irjdYFi2eqefZ6lLaoZFYBi
-----END RSA PRIVATE KEY-----

如果您的PEM具有不同的格式(可能是Binary?缺少公鑰或私鑰部分?此示例中沒有的額外部分?)那么您需要從Keychain Access的PKCS#12導出中運行轉換或重新導出PEM在OS X中。轉換步驟會根據您實際擁有的文件類型而有所不同,因此我無法在沒有其他信息的情況下向您提供任何指導,但我可以為您提供有關如何重新導出PEM的說明來自OS X中的Keychain Access:

  1. 打開鑰匙串訪問。
  2. 在“登錄”鑰匙串中,在“Apple Production iOS Push Services:your.apps.app.id”中搜索“我的證書”或“所有項目”類別
  3. 右鍵單擊從該搜索返回的項目,然后選擇“導出”選項。
  4. 將“個人信息交換(.p12)”文件保存在易於訪問的位置。
  5. 指定您可以記住的.p12文件的密碼,並按照屏幕上的提示通過Keychain進行身份驗證以導出數據。
  6. 打開終端並將'cd'放入上一步包含.p12的目錄中。
  7. 對.p12文件名執行以下命令: openssl pkcs12 -in FILENAME.p12 -out FILENAME.pem -nodes
  8. 出現提示時,輸入您在步驟5中創建的.p12文件密碼,然后按Enter鍵。
  9. 將PEM移動到您的服務器並在必要時更新任何代碼引用。

同樣,這是基於您在問題中列出的錯誤代碼的所有推測,但是請試一試,讓我們知道事情的進展情況。

據我所知,我得到了同樣的錯誤,因為我忽略了在我的openssl命令中使用-x509標志。 根據文檔 ,沒有這個命令,openssl只生成一個“證書請求”,而不是一個真正的自簽名證書,這就是我想要的。

openssl req -x509 -nodes -newkey rsa:2048 -keyout key.pem -out cert.pem -subj "/CN=*.example.com"
              ^
   (make sure you use this)

如果我錯了,請糾正我。 我只是把它放在這里,以防它幫助某人。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM