Peer in SSL mit Python verifizieren

8

Ich habe versucht, herauszufinden, wie ich ein selbstsigniertes Zertifikat von einem Server in Python überprüfen kann. Ich konnte in Google nicht viele Daten finden. Ich möchte auch sicherstellen, dass die Server-URL

Vielen Dank im Voraus für alle Einsichten.

    
Bhargava 05.10.2009, 09:37
quelle

3 Antworten

10

Von den Kommentaren zu meiner ersten Antwort sehe ich, dass es ein allgemeines Missverständnis gibt, was "ein Zertifikat bestätigen" bedeutet. Ich werde versuchen, hier eine kurze Erklärung zu schreiben, um einige der Illusionen zu beseitigen.

Bei der Zertifikatsverifizierung wird eine Signatur der Metadaten des Zertifikats (d. h. Betreff, Gültigkeitsdauer, Erweiterungen usw.) anhand einer kryptografischen Signatur überprüft.

Wenn Sie nur ein selbstsigniertes Zertifikat für die Validierung haben, können Sie es nicht von einem anderen selbstsignierten Zertifikat mit genau denselben Metadaten unterscheiden, sondern vom anderen Schlüssel, sofern Sie den Schlüssel des Schlüsselzertifikats nicht im Voraus kennen. Und vergessen Sie nicht, dass Sie alle diese Verifizierungsprozedur einrichten, um die Anforderung zu entfernen, dieses Wissen im Voraus zu haben. Durch die regelmäßige Überprüfung von Zertifikaten können Sie die Voraussetzungen für die Nutzung von vorinstalliertem Know-how, das aus Zertifikaten von Drittanbietern, auch "CA-Zertifikate" genannt, besteht, nicht vollständig beseitigen. Da dieses Wissen vorab geteilt wird, können diese Zertifikate selbstsigniert sein, aber denken Sie daran, dass Sie Informationen über die Gültigkeit dieser Zertifikate erhalten haben, die nicht aus dem Verifizierungsprozess, sondern aus etwas äußerem Wissen stammen.

Wenn Sie eine Reihe von vertrauenswürdigen CA-Zertifikaten haben, die zwischen Peers verteilt sind, können Sie diese verwenden, um andere Zertifikate zu signieren und Signaturen anhand des vorinstallierten Wissens vertrauenswürdiger Zertifizierungsstellen zu prüfen.

Wenn Sie jedoch kein zusätzliches Wissen über ein selbstsigniertes Zertifikat mit Ausnahme des Zertifikats selbst haben, können Sie keine Annahmen über das Vertrauen in dieses bestimmte Zertifikat machen, da es sowohl von bösartigen Hackern als auch von vertrauenswürdigen Servern ausgegeben werden kann / p>

Bitte erwirbt etwas Wissen über Mann im mittleren Angriff , Öffentliche Schlüsselinfrastruktur und Kryptografie mit öffentlichen Schlüsseln im Allgemeinen vor der Durchführung jeglicher Art von Zertifikatsverifizierungsprozessen.

Bitte haben Sie Verständnis dafür, dass die blinde Verifizierung eines selbstsignierten Zertifikats Sie selbst vor einem cleveren Hacker in Ihrem eigenen Netzwerk nicht schützt, selbst wenn Sie die Internetsicherheit überhaupt nicht in Betracht ziehen.

Bearbeiten : Der Autor der Frage stellte klar, dass er tatsächlich nach einer Verisign-Signatur (oder einer anderen CA-Signatur) auf einem Zertifikat mit M2Crypto-Bindungen suchen wollte. Hier sind zwei Beispiele:

%Vor%

Wenn Sie ein Verzeichnis mit vielen CA-Zertifikaten verwenden wollen (was oft bequemer ist), müssen Sie jedes Zertifikat in <hash>.0 umbenennen, wobei <hash> der Hash des Zertifikatsbetreffs ist (erhalten mit openssl x509 -noout -hash -in cert.pem ).

    
abbot 05.10.2009, 20:51
quelle
2

Ich nehme an, Sie verwenden eine OpenSSL-Bindung. Ich sehe 2 Möglichkeiten, um Ihr Problem zu lösen.

  1. Sie können Ihr Zertifikat zum Verzeichnis openssl hinzufügen (führen Sie openssl version -d aus, um es für Ihr System zu sehen). Dies betrifft alle Programme, die openssl auf Ihrem Computer verwenden.
  2. Laden Sie das Zertifikat und fügen Sie es zur Laufzeit hinzu (die folgende Codeskizze gilt für PyOpenSSL, sollte aber für andere Bindungen ähnlich sein):

.

%Vor%     
Denis Otkidach 05.10.2009 15:38
quelle
0

Es ist unmöglich, ein selbstsigniertes Zertifikat zu verifizieren, da es sich um ein selbstsigniertes Zertifikat handelt.

Sie müssen ein Zertifikat durch ein Zertifikat eines anderen vertrauenswürdigen Drittanbieters signieren, um alles überprüfen zu können. Anschließend können Sie das Zertifikat dieses Drittanbieters der Liste Ihrer vertrauenswürdigen Zertifizierungsstellen hinzufügen und anschließend die signierten Zertifikate überprüfen durch dieses Zertifikat / CA.

Wenn Sie Empfehlungen dazu in Python benötigen, sollten Sie den Namen der von Ihnen verwendeten SSL-Bibliothek angeben, da es eine Auswahl an SSL-Bibliotheken für Python gibt.

    
abbot 05.10.2009 14:12
quelle

Tags und Links