SSLError используя boto - PullRequest
       103

SSLError используя boto

3 голосов
/ 13 марта 2020

Мы используем профиль прокси + при использовании команд aws s3 для просмотра наших блоков в CLI.

export HTTPS_PROXY=https://ourproxyhost.com:3128
aws s3 ls s3://our_bucket/.../ --profile dev

И мы можем отлично работать с нашими сегментами и объектами.

Поскольку мне нужно написать Python код для этого, я перевел это, используя boto3:

# python 2.7.12
import boto3                        # v1.5.18
from botocore.config import Config  # v1.8.32

s3 = boto3.Session(profile_name='dev').resource('s3', config=Config(proxies={'https': 'ourproxyhost.com:3128'})).meta.client
obj = s3.get_object(Bucket='our_bucket', Key='dir1/dir2/.../file')

Что я получаю, это:

botocore.vendored.requests.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590)

Почему это работает в CLI, но не в Python?

1 Ответ

2 голосов
/ 13 марта 2020
 botocore.vendored.requests.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590)

Вышеприведенная ошибка в большинстве случаев обычно связана с тем, что для подключений S3 используется комплект CA.

Возможные этапы разрешения:

1. Отключите проверку сертификата SSL:

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

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

2. Проверьте, установлен ли у вас AWS_CA_BUNDLE env var?:

echo $AWS_CA_BUNDLE

или

export | grep AWS_CA_BUNDLE

3. Проверьте, установлен ли сертификат в вашем python env?:

pip list | grep certifi

В зависимости от выходных данных вышеупомянутой команды, вы можете использовать версию certifi (которая не является зависимость boto3), которая имеет некорректный сертификат при взаимодействии с конечными точками s3.

Вам потребуется обновить версию OpenSSL или pin certifi до стабильной версии как показано ниже:

sudo pip uninstall certifi
sudo pip install certifi==2015.04.28

Надеюсь, это поможет!

...