Ich versuche, HTTPS-Anfragen mit einem PEM-Zertifikat wie folgt zu senden:
%Vor%Ich habe den folgenden Fehler:
%Vor%Wenn ich die cert_file von httplib entferne, habe ich die folgende Antwort:
%Vor%Wenn ich den Authentication-Header (wie von MattH empfohlen) mit leeren Post-Payloads hinzufüge, funktioniert es auch.
Allerdings, wenn ich die gute Anfrage mit dem Pfad, dem Körper und dem Header, wie folgt (ich vereinfachte sie ...)
%Vor%Ich habe 401 nicht autorisierte Antwort!
Wie Sie sehen können, werde ich zuerst gebeten, den PrivateKey zur Verfügung zu stellen! Warum brauchte ich den PrivateKey, wenn ich ein Kunde bin? dann, wenn ich den PrivateKey und das Zertifikat entfernen, und die Path / Body / Header habe ich 401 Unauthorized Fehler mit der Nachricht WWW-Authenticate: Basic Realm="SYNCNB Server Realm".
Könnte jemand dieses Problem erklären? Gibt es eine andere Möglichkeit, HTTPS-Anfrage mit einem Zertifikat in Python zu senden?
Siehe Ссылка
httplib.HTTPSConnection
führt keine Überprüfung des Serverzertifikats durch.
Die Option zum Einschließen Ihres privaten Zertifikats besteht, wenn der Server eine zertifikatbasierte Authentifizierung von Clients durchführt. I.e. Der Server überprüft, ob der Client über ein Zertifikat verfügt, das von einer vertrauenswürdigen Zertifizierungsstelle signiert wurde und auf dessen Ressourcen zugreifen darf.
Wenn Sie das optionale cert-Argument nicht angeben, sollten Sie in der Lage sein, eine Verbindung zum HTTPS-Server herzustellen, das Serverzertifikat jedoch nicht zu überprüfen.
Aktualisieren
Nach Ihrem Kommentar, dass Sie die grundlegende Authentifizierung versucht haben, sieht es so aus, als ob der Server immer noch möchte, dass Sie sich mit basic auth authentifizieren. Entweder sind deine Zugangsdaten ungültig (hast du sie selbstständig verifiziert?) Oder dein Authenticate
Header ist nicht korrekt formatiert. Ändern Sie Ihren Beispielcode so, dass ein einfacher Auth-Header und ein leerer Post-Payload enthalten sind:
Es hört sich so an, als ob Sie etwas benötigen, das einer Antwort ähnlich ist, die ich Ihnen zuvor gegeben habe. einfache Client-Zertifikat-Authentifizierung . Hier ist der Code für die Bequemlichkeit leicht für Ihre Frage geändert:
%Vor%Sie versuchen, eine Verbindung zu einem Webdienst herzustellen, für den eine Authentifizierung basierend auf dem Clientzertifikat erforderlich ist.
Sind Sie sicher Sie haben eine PEM-Datei und keine PKCS # 12-Datei? Eine PEM-Datei sieht so aus (ja, ich weiß, dass ich einen privaten Schlüssel eingefügt habe ... das ist nur ein Dummy, den ich für dieses Beispiel erstellt habe):
%Vor%Lesen Sie diese Frage.
Tags und Links python ssl https certificate