Error en la verificación del certificado al conectarse a S3

Estoy intentando conectarme a S3 utilizando boto, pero parece fallar. He intentado algunas soluciones, pero no parecen funcionar. ¿Alguien puede por favor ayudarme con esto? A continuación se muestra el código.

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) 

Probablemente el nombre de su contenedor contenga un punto, por eso la verificación del certificado ssl falla. Este es un problema bastante frecuente, vea este problema de github, por ejemplo.

No use una conexión insegura ( is_secure=False ), en su lugar use OrdinaryCallingFormat :

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

Probablemente necesite actualizar su región de AWS , por ejemplo, us-east-1

Encontre un camino,

utilizado is_secure=False en connect_s3() .

En boto3, si está utilizando el cliente s3, use verify = False al crear el cliente s3. Por ejemplo:

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

Como se menciona en la documentación de boto3, esto solo desactiva la validación de los certificados SSL. Se seguirá utilizando SSL (a menos que use_ssl sea Falso), pero no se verificarán los certificados SSL.

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

Me encuentro con este problema, también. Mi entorno es Ubuntu 15.04, Python 2.7.9 y Boto 2.38.0.

Establecer el argumento validate_certs = False no hace que funcione con la conexión HTTPS sin un certificado válido. Después de leer el código de boto, encontré que es un comportamiento de los módulos ssl de Python. Luego encontré una solución aquí: “SSL: CERTIFICATE_VERIFY_FAILED” Error . Y la solución funciona !!!.

Usuarios de macOS: si está utilizando Python 3.6 del instalador binario de python.org vinculado en esta página, lea atentamente la Información importante que se muestra durante la instalación; esta información también está disponible después de la instalación haciendo clic en / Aplicaciones / Python 3.6 / ReadMe.rtf. Hay información importante sobre los cambios en el Python suministrado por el instalador 3.6.0, particularmente con respecto a la validación de certificados SSL.

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

De ReadMe.rtf en el momento de escribir este artículo:

Verificación de certificados y OpenSSL.

NUEVO Esta variante de Python 3.6 ahora incluye su propia copia privada de OpenSSL 1.0.2. A diferencia de las versiones anteriores, las bibliotecas OpenSSL proporcionadas por Apple en desuso ya no se usan. Esto también significa que los certificados de confianza en el sistema y los llaveros de usuario administrados por la aplicación Keychain Access y la utilidad de línea de comandos de seguridad ya no se utilizan como valores predeterminados en el módulo ssl de Python. Para 3.6.0, se incluye una secuencia de comandos de ejemplo en / Aplicaciones / Python 3.6 para instalar un paquete seleccionado de certificados raíz predeterminados del paquete certifi de terceros ( https://pypi.python.org/pypi/certifi ). Si elige utilizar certifi, debe considerar la posibilidad de suscribirse al servicio de actualización de correo electrónico del proyecto para recibir una notificación cuando se actualice el paquete de certificados.

El pip incluido en el paquete con el instalador de Python 3.6 tiene su propio almacén de certificados predeterminado para verificar las conexiones de descarga.