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?


Anmelden zum Antworten