2013-07-12 22 views
5

Trong khi cố gắng để thực hiện một thử nghiệm để đẩy ứng dụng của tôi tôi nhận được lỗi sau:ssl Outines 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 

Và kịch bản của tôi trông giống như:

#!/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() 

gì nguyên nhân của lỗi này là gì?

Trả lời

9

Tôi đã không chạy qua lỗi cụ thể đó trước trong Python, nhưng có vẻ như OpenSSL đã bị khóa trên tệp .pem của bạn - tôi dự đoán rằng tệp .pem bạn đang sử dụng không phải là định dạng đúng cho những gì Python yêu cầu OpenSSL làm. Tôi đã mở một trong các tệp .pem tốt đã biết của tôi, thay thế thông tin nhận dạng cá nhân của tôi và khóa công khai/riêng tư bằng dữ liệu rác để bạn có thể cảm nhận được những gì không được bảo vệ bằng mật khẩu .pem sẽ giống như thế.

Tệp PEM chứa cả khóa công khai và khóa riêng tư của bạn. Không bao giờ đăng chúng để những người khác xem xét khi họ có khả năng xem các khóa riêng tư của bạn và sau đó có thể mạo danh bạn hoặc máy chủ của bạn!

LƯU Ý: Danh sách mã sau đây là tập hợp dữ liệu ngẫu nhiên, giả mạo để minh họa định dạng tệp .pem. PEM mẫu này sẽ không thành công ngay cả khi xác minh thông thường nhất cho văn bản "THIS_IS_JUST_RANDOM_CHARACTERS" không được ẩn, nơi cần có dữ liệu khóa thực tế thay vì chỉ dữ liệu ký tự ngẫu nhiên.

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

Nếu PEM của bạn có một định dạng khác nhau (có lẽ Binary? Thiếu các phần chìa khóa công cộng hay tư nhân? Phần phụ không có mặt trong mẫu này?) Thì bạn cần phải chạy một chuyển đổi hoặc tái xuất khẩu PEM của bạn từ một Xuất PKCS # 12 từ Keychain Truy cập trong OS X. Bước chuyển đổi sẽ thay đổi dựa trên loại tệp bạn thực sự có, vì vậy tôi không thể cung cấp cho bạn bất kỳ hướng dẫn nào mà không có thêm thông tin, nhưng tôi có thể cung cấp cho bạn hướng dẫn về cách đi về việc xuất lại PEM từ Keychain Truy cập trong OS X:

  1. Mở Keychain Access.
  2. Trong keychain 'đăng nhập', tìm kiếm danh mục 'Chứng chỉ của tôi' hoặc 'Tất cả các mục' cho 'Dịch vụ đẩy iOS của Apple Production: your.apps.app.id'
  3. Nhấp chuột phải vào mục được trả về từ tìm kiếm đó và chọn tùy chọn 'Xuất'.
  4. Lưu tệp 'Trao đổi thông tin cá nhân (.p12)' ở vị trí dễ truy cập.
  5. Chỉ định mật khẩu cho tệp .p12 mà bạn có thể nhớ và làm theo bất kỳ lời nhắc trên màn hình nào để xác thực bằng Keychain để xuất dữ liệu.
  6. Mở Terminal và 'cd' vào thư mục chứa .p12 từ bước trước đó.
  7. Thực hiện lệnh sau đối với tên tệp .p12: openssl pkcs12 -in FILENAME.p12 -out FILENAME.pem -nodes
  8. Khi được nhắc, hãy nhập mật khẩu của tệp .p12 mà bạn đã tạo ở bước 5 và nhấn enter.
  9. Di chuyển PEM đến máy chủ của bạn và cập nhật bất kỳ tham chiếu mã nào nếu cần.

Một lần nữa, đây là tất cả suy đoán dựa trên mã lỗi bạn liệt kê trong câu hỏi của bạn, tuy nhiên, hãy cho chúng tôi biết mọi thứ diễn ra như thế nào.

Các vấn đề liên quan