it-swarm.com.ru

Ошибка проверки сертификата Boto [SSL: CERTIFICATE_VERIFY_FAILED] при подключении к S3

Я пытаюсь подключиться к S3 с помощью boto, но, похоже, не удается. Я пробовал некоторые обходные пути, но они, кажется, не работают. Может кто-нибудь, пожалуйста, помогите мне с этим. Ниже приведен код. 

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

Я нашел путь, 

использовал is_secure=False в connect_s3().

9
Siddarth

Возможно, имя вашего сегмента содержит точку, поэтому проверка SSL-сертификата не удалась. Это довольно частая проблема, см., Например, этот выпуск github .

Не используйте небезопасное соединение (is_secure=False), вместо этого используйте OrdinaryCallingFormat:

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

Возможно, вам необходимо обновить регион AWS , например, us-east-1

11
linqu

В boto3, если вы используете клиент s3, используйте verify = False при создании клиента s3 . Например: 

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

Как упоминалось в документации по boto3, это только отключает проверку SSL-сертификатов. SSL будет по-прежнему использоваться (если только use_ssl не имеет значения False), но сертификаты SSL не будут проверены.

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

1
peaxol

пользователи macOS: если вы используете Python 3.6 с сайта python.org Бинарный установщик, указанный на этой странице, внимательно прочитайте Важная информация отображается во время установки; эта информация также доступен после установки, нажав /Приложения/Python 3.6/ReadMe.rtf. Есть важная информация там об изменениях в Python, поставляемом установщиком 3.6.0, особенно в отношении проверки сертификата SSL.

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

Из ReadMe.rtf на момент написания этой статьи:

Проверка сертификата и OpenSSL

NEW Этот вариант Python 3.6 теперь включает собственную закрытую копию OpenSSL 1.0.2. В отличие от предыдущих выпусков, устарел Поставляемые Apple библиотеки OpenSSL больше не используются. Это также означает что сертификаты доверия в системных и пользовательских цепочках ключей управляются приложение Keychain Access и утилита командной строки безопасности больше не используются как значения по умолчанию модулем Python ssl. Для 3.6.0, Пример командного сценария включен в/Applications/Python 3.6 до установите курированный пакет корневых сертификатов по умолчанию из сторонний сертификационный пакет ( https://pypi.python.org/pypi/certifi ). Если вы решите использовать certifi, вам следует рассмотреть возможность подписки на Служба обновления электронной почты проекта, которая будет уведомлена, когда сертификат Пакет обновлен.

Связанный пункт, включенный в установщик Python 3.6, имеет свой собственный хранилище сертификатов по умолчанию для проверки подключений к загрузке.

0
steamer25

Я тоже сталкиваюсь с этой проблемой. Моя среда - Ubuntu 15.04, Python 2.7.9 и Boto 2.38.0.

Установка аргумента validate_certs = False не заставляет его работать с HTTPS-соединением без действительного сертификата. Прочитав код boto, я обнаружил, что это поведение ssl-модулей Python. Тогда я нашел решение здесь: Ошибка «SSL: CERTIFICATE_VERIFY_FAILED» . И решение работает !!!.

0
diabloneo