2013-07-12 80 views
5

雖然試圖使擠壓測試,以我的應用程序,我發現了以下錯誤:SSL SSLError烏蒂內: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() 

什麼是這個錯誤的原因?

回答

9

我還沒有在Python中遇到特定的錯誤,但它看起來非常像OpenSSL在您的.pem文件中窒息 - 我推測您使用的.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格式不同,(也許是二進制?缺少公共或私有密鑰的部分?這個樣本中不存在額外的部分?),那麼你需要運行一個轉換或轉口的PEM PKCS#12從OS X中的Keychain Access導出。轉換步驟根據您實際擁有的文件類型而有所不同,因此,如果沒有附加信息,我無法向您提供任何指導,但我可以爲您提供有關如何開始在OS X中從Keychain Access重新導出PEM:

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

再一次,這是基於您在問題中列出的錯誤代碼的所有猜測,但請給出一個鏡頭並讓我們知道事情進展情況。

相關問題