Zertifikat für die Nutzung mit PyMySQL

  • Hallo,


    ich möchte mich mittels der Python-Bibliothek PyMySQL verschlüsselt mit einer im Webhosting gehosteten Datenbank verbinden.


    Folgendes klappt



    Dies ist aber unverschlüsselt. Bei https://stackoverflow.com/ques…e-pymysql-connect-for-ssl habe ich gesehen, dass ich eventuell einige pem-Dateien benötige, um eine verschlüsselte Verbindung hinzubekommen.


    Mit DataGrip habe ich eine verschlüsselte Verbindung hinbekommen, ohne dass ich solche Daten angab (ich ließ die Felder einfach leer)


    Kann mir jemand weiterhelfen und mir sagen, was zu tun ist?

  • Die Pem Dateien bekommst du entweder über OpenSSL openssl s_client -connect oder du nimmst die aus deiner MySQL Installation direkt.

    Key und Cert benötigst du nur, wenn du dich darüber authentifizieren willst, anstelle von Username & Passwort.

    CA benötigst du für die Verifizierung des Servers. Viele Clients bieten hier die Option, eine solche Verifizierung zu überspringen.


    In dem Falle müsstest du nichts angeben.

    Hast du dir bereits die Dokumentation von pymysql angesehen? Da müsste sowas stehen. Evtl. kannst du hier mit einem TLS Context arbeiten, dann müsstest du dir die TLS Bibliothek von Python näher ansehen.

  • Danke für deine Hinweise.


    Bei der Nutzung vom Parameter ssl={'ca':None}im Aufruf pymysql.connect wird die Überprüfung des Zertifikat des Hosts übersprungen.


    Beim Aufruf von openssl s_client bekomme ich folgendes:



    Da sind also keine Informationen drin.


    Zitat

    oder du nimmst die aus deiner MySQL Installation direkt


    Wo finde ich diese Daten?

  • Die Sache mit ssl={'ca':None} habe ich so eine halbe Stunde nach dem Posten der Frage gefunden, als ich mir den relevanten Quellcode von PyMySQL durchlas. Damit klappt es; laut Wireshark ist die Verbindung dann auch verschlüsselt.


    Ich kann es vorerst so lassen, wäre aber schon gut, wenn ich die authentizität des Servers überprüfen könnte.