it-swarm.com.de

Die Überprüfung des Boto-Zertifikats [SSL: CERTIFICATE_VERIFY_FAILED] ist während der Verbindung mit S3 fehlgeschlagen

Ich versuche, mit boto eine Verbindung zu S3 herzustellen, aber es scheint zu scheitern. Ich habe einige Problemumgehungen versucht, aber sie scheinen nicht zu funktionieren. Kann mir bitte jemand dabei helfen. Unten ist der Code.

import boto

if not boto.config.has_section('Credentials'):
    boto.config.add_section('Credentials')
boto.config.set('Credentials', 'aws_access_key_id', AWS_KEY)
boto.config.set('Credentials', 'aws_secret_access_key', AWS_SECRET_KEY)
if not boto.config.has_section('Boto'):
    boto.config.add_section('Boto')
    boto.config.set('Boto', 'https_validate_certificates', 'False')
    boto.config.add_section('aws info')
    boto.config.set('aws info','aws_validate_certs','False')



s3 = boto.connect_s3(validate_certs=False)
bucket = s3.get_bucket(Bucket_NAME)
9
Siddarth

Ich habe einen Weg gefunden,

verwendet is_secure=False in connect_s3().

9
Siddarth

Wahrscheinlich enthält Ihr Bucket-Name einen Punkt. Aus diesem Grund schlägt die SSL-Zertifikatsüberprüfung fehl. Dies ist ein recht häufiges Problem, siehe dieses Github-Problem zum Beispiel.

Verwenden Sie keine unsichere Verbindung (is_secure=False), sondern OrdinaryCallingFormat:

import boto
conn = boto.s3.connect_to_region('eu-west-1', calling_format=boto.s3.connection.OrdinaryCallingFormat())
bucket = conn.get_bucket(your_bucket)

Sie müssen wahrscheinlich Ihre AWS-Region aktualisieren, z. us-east-1

11
linqu

Wenn Sie in boto3 den S3-Client verwenden, verwenden Sie verify = False, wenn Sie den S3-Client erstellen. Zum Beispiel:

s3 = boto3.client('s3', verify=False)

Wie in der Dokumentation zu boto3 erwähnt, wird hiermit nur die Validierung von SSL-Zertifikaten deaktiviert. SSL wird weiterhin verwendet (es sei denn, use_ssl ist False), SSL-Zertifikate werden jedoch nicht überprüft.

https://boto3.amazonaws.com/v1/documentation/api/latest/reference/core/session.html

1
peaxol

macOS-Benutzer: Wenn Sie Python 3.6 aus dem auf dieser Seite verlinkten Binärinstallationsprogramm von python.org verwenden, lesen Sie die während der Installation angezeigten wichtigen Informationen sorgfältig durch. Diese Informationen sind auch nach der Installation verfügbar, indem Sie auf/Programme/Python 3.6/ReadMe.rtf klicken. Dort finden Sie wichtige Informationen zu Änderungen in Python 3.6.0, das vom Installationsprogramm bereitgestellt wird, insbesondere im Hinblick auf die Validierung von SSL-Zertifikaten.

https://www.python.org/downloads/release/python-360/

Zum Zeitpunkt des Schreibens von ReadMe.rtf:

Zertifikatsüberprüfung und OpenSSL

NEWDiese Variante von Python 3.6 enthält jetzt eine eigene private Kopie von OpenSSL 1.0.2. Im Gegensatz zu früheren Versionen werden die veralteten von Apple bereitgestellten OpenSSL-Bibliotheken nicht mehr verwendet. Dies bedeutet auch, dass die Vertrauenszertifikate in System- und Benutzerschlüsselanschlüssen, die von der Keychain Access-Anwendung und dem Sicherheitsbefehlszeilendienstprogramm verwaltet werden, vom Python ssl-Modul nicht mehr als Standard verwendet werden. Für 3.6.0 ist in/Applications/Python 3.6 ein Beispielbefehlsskript enthalten, mit dem ein kuratiertes Paket von Standardstammzertifikaten aus dem Zertifikatspaket eines Drittanbieters installiert werden kann ( https://pypi.python.org/pypi/certifi ). Wenn Sie sich für die Verwendung von certifi entscheiden, sollten Sie den E-Mail-Aktualisierungsdienst des Projekts abonnieren, um benachrichtigt zu werden, wenn das Zertifikatspaket aktualisiert wird.

Das im Python 3.6-Installationsprogramm enthaltene Pip-Paket verfügt über einen eigenen Standardzertifikatsspeicher zum Überprüfen der Download-Verbindungen.

0
steamer25

Ich stoße auch auf dieses Problem. Meine Umgebung ist Ubuntu 15.04, Python 2.7.9 und Boto 2.38.0.

Wenn Sie das Argument validate_certs = False setzen, funktioniert es nicht mit der HTTPS-Verbindung ohne gültiges Zertifikat. Nachdem ich den Code von boto gelesen hatte, stellte ich fest, dass es sich um ein Verhalten der ssl-Module von Python handelt. Dann habe ich hier eine Lösung gefunden: "SSL: CERTIFICATE_VERIFY_FAILED" Fehler . Und die Lösung funktioniert !!!.

0
diabloneo