连接到S3时,Boto [SSL:CERTIFICATE_VERIFY_FAILED]证书验证失败

Sid*_*rth 13 python amazon amazon-s3 boto amazon-web-services

我正在尝试使用boto连接到S3,但它似乎失败了.我尝试了一些解决方法,但它们似乎没有用.任何人都可以帮我这个.下面是代码.

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)
Run Code Online (Sandbox Code Playgroud)

lin*_*nqu 12

可能您的存储桶名称包含一个点,这就是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)
Run Code Online (Sandbox Code Playgroud)

您可能需要更新您的AWS区域,例如us-east-1


pea*_*xol 9

在 boto3 中,如果您使用的是 s3 客户端,则在创建 s3 客户端时使用 verify=False。例如:

s3 = boto3.client('s3', verify=False)
Run Code Online (Sandbox Code Playgroud)

正如 boto3 文档中提到的,这只会关闭 SSL 证书的验证。仍将使用 SSL(除非 use_ssl 为 False),但不会验证 SSL 证书。

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

  • 此解决方案不安全,应仅在另一方的证书无效且对此无能为力的情况下使用。 (6认同)

Sid*_*rth 8

我找到了一个方法,

使用is_secure=Falseconnect_s3().

  • 是的@EOL 在我最终找到正确的解决方案之前,我必须经历所有非工作解决方案。很沮丧。 (2认同)

sap*_*shi 6

添加验证=False

boto3.resource(
            "s3",
            endpoint_url=<URL>,
            aws_access_key_id=<ID>,
            aws_secret_access_key=<Key>,
            verify=False
        )
Run Code Online (Sandbox Code Playgroud)