2013-08-01 93 views
10

SignedJwtAssertionCredentials trên appengine (với pycrypto 2.6) không hỗ trợ định dạng pkcs12, do đó tôi đang cố gắng để sử dụng các phím PEM thay vào đó, như đề xuất ở khắp mọi nơi ..SignedJwtAssertionCredentials trên AppEngine không nhận PEM chính

đây là mã của tôi:

f = file(os.path.join(os.path.dirname(__file__), KEY_FILE), "r") 
    key = f.read() 
    f.close() 

    credentials = SignedJwtAssertionCredentials(SERVICE_ACCOUNT_EMAIL, key, 
     scope="https://www.googleapis.com/auth/drive" 
    http = httplib2.Http() 
    http = credentials.authorize(http) 

KEY_FILE là chìa khóa PEM, chuyển đổi bằng lệnh:

openssl pkcs12 -in privatekey.p12 -nodes -nocerts > privatekey.pem 

nhưng tôi vẫn nhận được lỗi này, một s nếu nó không nhận ra đó là một chìa khóa PEM:

NotImplementedError: PKCS12 format is not supported by the PyCrpto library. 
Try converting to a "PEM" (openssl pkcs12 -in xxxxx.p12 -nodes -nocerts > privatekey.pem) or using PyOpenSSL if native code is an option. 

cùng lỗi nếu tôi vượt qua chỉ là tên tập tin để các nhà xây dựng (không đọc nội dung của file)

bất kỳ ý tưởng?

Trả lời

17

Vâng, lỗi rất gây hiểu nhầm. Những gì bạn đang làm là tốt; chỉ loại bỏ các tiêu đề từ tập tin PEM để nó bắt đầu với -----BEGIN PRIVATE KEY-----, hoặc chạy lệnh sau trên nó:

openssl pkcs8 -nocrypt -in privatekey.pem -passin pass:notasecret -topk8 -out pk.pem 
+0

tôi có một vấn đề tương tự và tôi đã cố gắng giải pháp của bạn quá nhưng tôi nhận được một lỗi mới. Bạn đã có một giải pháp? Vui lòng kiểm tra [PyCrypto Errors with x.p12 tệp từ Google Developer Console] (http://stackoverflow.com/q/25571504/1443563) – gsinha

6

cho những người quan tâm, tôi đã kết thúc soạn thảo một hướng dẫn ngắn về cách sử dụng các API Domains Google+ với python trên App Engine, bạn có thể tìm thấy nó ở đây: https://gist.github.com/vircheck/6292176

nó cũng áp dụng đối với các API khác dựa trên các tài khoản dịch vụ, chẳng hạn như các API Drive vv ..

+0

Tôi gặp sự cố tương tự và tôi cũng đã thử giải pháp của bạn nhưng tôi gặp lỗi mới. Bạn đã có một giải pháp? Vui lòng kiểm tra [PyCrypto Errors with x.p12 tệp từ Google Developer Console] (http://stackoverflow.com/q/25571504/1443563) – gsinha