web-dev-qa-db-fra.com

Boto [SSL: CERTIFICATE_VERIFY_FAILED] échec de la vérification du certificat lors de la connexion à S3

J'essaie de me connecter à S3 à l'aide de boto, mais cela semble échouer. J'ai essayé quelques solutions de contournement, mais elles ne semblent pas fonctionner. Quelqu'un peut-il m'aider s'il vous plaît avec cela. Ci-dessous le 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

J'ai trouvé un moyen,

utilisé is_secure=False dans connect_s3().

9
Siddarth

Votre nom de compartiment contient probablement un point. C'est pourquoi la vérification du certificat SSL échoue. Ceci est un problème assez fréquent, voyez ce problème github par exemple.

N'utilisez pas de connexion non sécurisée (is_secure=False), utilisez plutôt OrdinaryCallingFormat:

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

Vous devrez probablement mettre à jour votre AWS Region , par exemple. us-east-1

11
linqu

Dans boto3, si vous utilisez le client s3, utilisez verify = False lors de la création du client s3. Pour par exemple:

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

Comme mentionné dans la documentation de boto3, cela désactive uniquement la validation des certificats SSL. SSL sera toujours utilisé (sauf si use_ssl est False), mais les certificats SSL ne seront pas vérifiés.

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

1
peaxol

utilisateurs de macOS: Si vous utilisez Python 3.6 à partir du programme d'installation binaire de python.org lié à cette page, veuillez lire attentivement les informations importantes affichées lors de l'installation. Ces informations sont également disponibles après l’installation en cliquant sur/Applications/Python 3.6/ReadMe.rtf. Vous y trouverez des informations importantes sur les modifications apportées au fichier Python fourni par le programme d’installation 3.6.0, notamment en ce qui concerne la validation des certificats SSL.

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

De ReadMe.rtf au moment d'écrire ces lignes:

Vérification de certificat et OpenSSL

NEWCette variante de Python 3.6 inclut désormais sa propre copie privée de OpenSSL 1.0.2. Contrairement aux versions précédentes, les bibliothèques OpenSSL obsolètes fournies par Apple ne sont plus utilisées. Cela signifie également que les certificats d'approbation dans les trousseaux système et utilisateur gérés par l'application Keychain Access et l'utilitaire de ligne de commande de sécurité ne sont plus utilisés par défaut par le module python ssl. Pour 3.6.0, un exemple de script de commande est inclus dans/Applications/Python 3.6 pour installer un ensemble organisé de certificats racine par défaut issus du package de certification tiers ( https://pypi.python.org/pypi/certifi ). Si vous choisissez d'utiliser certifi, vous devez envisager de vous abonner au service de mise à jour par e-mail du projet pour être averti lorsque le groupe de certificats est mis à jour.

Le pip fourni avec le programme d'installation de Python 3.6 possède son propre magasin de certificats par défaut pour la vérification des connexions de téléchargement.

0
steamer25

Je rencontre aussi ce problème. Mon environnement est Ubuntu 15.04, Python 2.7.9 et Boto 2.38.0.

Définir l’argument validate_certs = False ne le fait pas fonctionner avec la connexion HTTPS sans certificat valide. Après avoir lu le code de boto, j’ai trouvé que c’était un comportement des modules SSL de Python. Ensuite, j'ai trouvé une solution ici: "SSL: CERTIFICATE_VERIFY_FAILED" Erreur . Et la solution fonctionne !!!.

0
diabloneo