Win10环境下连接AWS时遇SSL证书验证失败问题求助
Win10下Python连接AWS时SSL证书验证失败的排查方案
检查Python的证书存储路径
- 执行命令确认Python默认使用的证书位置:
python -c "import ssl; print(ssl.get_default_verify_paths())",查看输出里的openssl_cafile和openssl_capath是否指向你配置的证书文件/目录 - 如果路径不符,可设置环境变量
SSL_CERT_FILE指向正确的证书文件,或SSL_CERT_DIR指向证书目录
- 执行命令确认Python默认使用的证书位置:
验证证书文件有效性
- 打开你使用的证书文件,确认是完整的PEM格式(开头包含
-----BEGIN CERTIFICATE-----,结尾包含-----END CERTIFICATE-----) - 用OpenSSL命令验证书链:
openssl s_client -connect aws.amazon.com:443 -CAfile 你的证书文件路径,查看输出中是否有Verify return code: 0 (ok),没有则说明证书链不完整或文件损坏
- 打开你使用的证书文件,确认是完整的PEM格式(开头包含
检查Python和SSL版本
- 旧版本Python的SSL模块可能存在兼容问题,尝试升级到Python 3.8及以上版本
- 执行
python -c "import ssl; print(ssl.OPENSSL_VERSION)"查看OpenSSL版本,若低于1.1.1,可考虑更新Python或单独更新OpenSSL
排查代理或防火墙干扰
- 若开启了VPN、企业代理等工具,先关闭后再执行脚本,这类工具可能拦截SSL请求
- 检查系统防火墙、杀毒软件是否限制了Python访问外部HTTPS端口,或篡改了证书
给AWS SDK直接指定证书路径
- 若使用boto3或botocore,可在代码中直接指定证书路径:
import boto3 from botocore.config import Config config = Config( verify='/path/to/your/certificate.pem' ) client = boto3.client('s3', config=config) - 也可设置环境变量
AWS_CA_BUNDLE指向证书文件,让AWS SDK优先使用该证书
- 若使用boto3或botocore,可在代码中直接指定证书路径:
重置系统根证书
- 打开「控制面板→互联网选项→内容→证书→受信任的根证书颁发机构」,检查是否存在Amazon相关根证书,缺失则手动导入AWS官方的PEM格式根证书
- 或执行
certutil -syncWithWU命令,同步Windows更新的根证书
内容的提问来源于stack exchange,提问作者Jeff A
相关产品推荐
相关产品推荐

