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
).
Ich nehme an, Sie verwenden eine OpenSSL-Bindung. Ich sehe 2 Möglichkeiten, um Ihr Problem zu lösen.
openssl version -d
aus, um es für Ihr System zu sehen). Dies betrifft alle Programme, die openssl auf Ihrem Computer verwenden. .
%Vor%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.