2016-08-05 11 views
1

So verwende ich das JIRA-Python-Modul, um eine Verbindung zu meiner Firma auf JIRA und es erfordert, dass ich das Zertifikat und den Schlüssel dafür übergeben. Mit dem OpenSSL-Modul kann ich jedoch mein lokales Zertifikat und den Schlüssel nicht lesen, um es der Anfrage zu übergeben.lesen Zertifikat (.crt) und Schlüssel (.key) Datei in Python

der Code für das Lesen unter

import OpenSSL.crypto 
c = open('/Users/mpadakan/.certs/mpadakan-blr-mpsot-20160704.crt').read() 
cert = OpenSSL.crypto.dump_certificate(OpenSSL.crypto.FILETYPE_PEM, c) 

der Fehler i erhalten ist

Traceback (most recent call last): 
File "flaskApp.py", line 19, in <module> 
cert = OpenSSL.crypto.dump_certificate(OpenSSL.crypto.FILETYPE_PEM, c) 
TypeError: must be X509, not str 

mir jemand sagen könnte, wie meine lokalen .crt und .key-Datei in x509 Objekte zu lesen?

+0

Weitere Informationen finden Sie auf. Warum können Sie Ihr lokales Zertifikat und Ihren Schlüssel nicht lesen? –

+0

sichere Sache. Just die Änderungen vorgenommen –

+2

Ich glaube, dass Sie hier die falsche Methode verwenden. Die Methode 'dump_certificate' erwartet ein X509-Zertifikat und speichert es als String ab. Sie scheinen das Zertifikat aus einer Zeichenfolge laden zu wollen. Haben Sie versucht, 'load_certificate' zu ​​verwenden? –

Antwort

0

Welches Format in Ihrer .crt Datei. Gibt es:

  1. Text beginnend mit -----BEGIN CERTIFICATE-----
  2. Text base64 begann mit MI Zeichen
  3. Binärdaten mit \x30 Byte zu beginnen?

In beiden ersten Fall gibt es PEM-Format, aber in zweiter Sie vermissen staring Linie, sie fügen Sie einfach richtig PEM-Datei oder konvertieren Datei mit base64 und dritten Fall erhalten Binär zu bekommen.

Im dritten Fall haben Sie DAS-Format, so dass es laden Sie OpenSSL.crypto.FILETYPE_ASN1

0

@ can-ibanoglu Recht auf waren verwenden sollen:

import OpenSSL.crypto 
cert = OpenSSL.crypto.load_certificate(
    OpenSSL.crypto.FILETYPE_PEM, 
    open('/tmp/server.crt').read() 
) 

>>> cert 
<OpenSSL.crypto.X509 object at 0x7f79906a6f50>