SSL-Zertifikat in Python validieren
-
Ich habe mit folgendem Skript (welches nicht von mir stammt), Test-Zertifikate für einen Webserver/Client erzeugt:
#using "pass" for every password openssl genrsa -des3 -out client.key 1024 openssl req -new -key client.key -out client.csr cp client.key client.key.orig openssl rsa -in client.key.orig -out client.key openssl x509 -req -days 3650 -in client.csr -signkey client.key -out client.crt cp client.crt client.pem cat client.key >> client.pem openssl pkcs12 -export -inkey client.key -in client.pem -name ClientName -out client.pfx openssl genrsa -des3 -out server.key 1024 openssl req -new -key server.key -out server.csr cp server.key server.key.orig openssl rsa -in server.key.orig -out server.key openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt cp server.crt server.pem cat server.key >> server.pem openssl pkcs12 -export -inkey server.key -in server.pem -name ServerName -out server.pfx
Ich kann den Webserver mit dem Zertifikat "server.pem" starten.
Nun möchte ich mit Python eine HTTPS-Anfrage an den Server senden und dabei das Zertifikat validieren.
Die erste Frage die sich hier für mich auftut:
Welche der erzeugten Dateien dient mir eigentlich als CA-File?
Im Moment versuche ich das Folgende:
conn = client.HTTPSConnection(self.ip, self.port, context=ssl.create_default_context(cafile="server.crt")) conn.request("GET", "/") res = conn.getresponse() assert res.status == 200 data = res.read() assert len(data) >= 0 conn.close()
Bekomme aber diesen Fehler:
ssl.CertificateError: hostname '192.168.x.xxx' doesn't match 'xx
Kann mir jemand sagen, mit welcher Datei und wie ich das Server-Zertifikat validieren kann?