Fehler mit httlib ist HTTPSConnection mit PKCS#12-Zertifikat

Ich versuche, httplib ist HTTPSConnection für die client-Validierung, die über eine PKCS #12 Zertifikat. Ich weiß, das Zertifikat ist gut, wie kann ich die Verbindung zum server mit, die es im MSIE und Firefox.

Hier ist meine Funktion connect (das Zertifikat enthält den privaten Schlüssel). Ich habe reduziert es nur die basics:

def connect(self, cert_file, host, usrname, passwd):
    self.cert_file = cert_file
    self.host = host

    self.conn = httplib.HTTPSConnection(host=self.host, port=self.port, key_file=cert_file, cert_file=cert_file)

    self.conn.putrequest('GET', 'pathnet/,DanaInfo=200.222.1.1+')
    self.conn.endheaders()
    retCreateCon = self.conn.getresponse()

    if is_verbose:
        print "Create HTTPS connection, " + retCreateCon.read()

(Hinweis: Keine Kommentare auf der hart codierte Pfad, bitte - ich bin versucht, diese zu arbeiten erste; ich werde es ziemlich danach. Der hart codierte Pfad korrekt ist, wie ich eine es im MSIE und Firefox. Ich habe die IP-Adresse für die post.)

Wenn ich versuche, diese laufen über eine PKCS#12-Zertifikat (ein .pfx-Datei), ich bekomme zurück, was zu sein scheint eine openSSL-Fehler. Hier ist der gesamte Fehler traceback:

 Datei "Usinghttplib_Test.py", line 175, in 
t.connect(cert_file=opts["-Schlüssel"] host=host_name, usrname=opts ["Benutzername"], passwd=opts ["Kennwort"]) 
Datei "Usinghttplib_Test.py", line 40, in Verbindung 
selbst.conn.endheaders() 
Datei "c:\python26\lib\httplib.py" Linie 904, in endheaders 
selbst._send_output() 
Datei "c:\python26\lib\httplib.py" Linie 776, in _send_output 
selbst.send(msg) 
Datei "c:\python26\lib\httplib.py", line 735, in senden 
selbst.connect() 
Datei "c:\python26\lib\httplib.py", Zeile 1112 -, in Verbindung 
selbst.Socke = ssl.wrap_socket(Socke, selbst.key_file, selbst.cert_file) 
Datei "c:\python26\lib\ssl.py", line 350, in wrap_socket 
suppress_ragged_eofs=suppress_ragged_eofs) 
Datei "c:\python26\lib\ssl.py", line 113, in __init__ 
cert_reqs, ssl_version, ca_certs) ssl.SSLError: [Errno 336265225] _ssl.c:337: Fehler:140B0009:SSL-Routinen:SSL_CTX_use_PrivateKey_file:PEM-lib 

Ankündigung des openSSL-Fehlers (der Letzte Eintrag in der Liste) stellt fest, "PEM-lib", das fand ich merkwürdig, da bin ich nicht versuchen, eine PEM-Zertifikat.

Für kicks, konvertierte ich die PKCS#12-cert, um eine PEM-cert und lief den gleichen code verwenden , dass. In diesem Fall erhielt ich keine Fehlermeldung, wurde ich aufgefordert enter PEM pass phrase, und den code habe versucht den server zu erreichen. (Erhielt ich die Antwort "Der Dienst ist nicht
zur Verfügung. Bitte versuchen Sie es später erneut.", aber ich glaube, das wäre, weil der server nicht akzeptieren, die PEM-cert. Ich kann keine Verbindung im Firefox an den server mithilfe der PEM-cert entweder.)

Ist httplib ist HTTPSConnection unterstützen soll, PCKS#12-Zertifikate? (Das ist, pfx-Dateien.) Wenn dem so ist, warum sieht es aus wie openSSL zu laden versucht es in das PEM-lib? Mache ich das alle falsch?

Jede Beratung ist willkommen.

EDIT: Die Zertifikat-Datei enthält sowohl das Zertifikat und den privaten Schlüssel, das ist, warum ich bin, die die gleichen Dateinamen für beide die HTTPSConnection ist key_file und cert_file Parameter.

Schreibe einen Kommentar