Windows下AWS CLI v2访问S3报SSL validation failed错误如何解决
问题描述
- 运行环境:已安装AWS CLI version 2,已执行
aws configure完成access key、secret key等认证参数配置,操作终端为Windows CMD或PowerShell - 报错现象:访问AWS资源时抛出错误:
SSL validation failed for https://s3.ap-south-1.amazonaws.com/ [Errno 2] No such file or directory
问题根因
该报错本质是AWS CLI进程发起HTTPS请求时,找不到配置中指定的CA根证书文件,常见触发场景包括:
- 安装AWS CLI后证书路径配置缺失,或配置了错误的无效路径
- 手动设置过
AWS_CA_BUNDLE环境变量,但变量指向的证书文件已被删除、移动 - 自定义安装AWS CLI时,默认证书路径与全局配置中记录的路径不匹配
- 系统代理、抓包软件拦截HTTPS请求,导致CLI读取证书路径异常
- 当前Windows账号对CLI内置的CA证书文件无读取权限
解决方案
按优先级依次尝试以下操作即可修复:
- 配置CLI默认内置证书路径
AWS CLI v2 Windows版本默认自带CA根证书文件,默认安装路径下的文件位置为C:\Program Files\Amazon\AWSCLIV2\botocore\cacert.pem,先在资源管理器确认该文件存在,之后在终端执行如下命令写入全局配置:
执行完成后关闭当前终端,重新打开CMD/PowerShell再尝试访问AWS资源即可。aws configure set default.ca_bundle "C:\Program Files\Amazon\AWSCLIV2\botocore\cacert.pem"
如果安装AWS CLI时选择了自定义安装路径,直接在安装目录搜索cacert.pem,将命令中的路径替换为搜索到的文件实际全路径即可 - 排查冲突的环境变量
打开Windows系统环境变量设置面板,检查是否存在名为AWS_CA_BUNDLE的用户/系统变量:- 如果变量值指向的文件不存在,直接删除该变量
- 如果存在
HTTP_PROXY、HTTPS_PROXY变量,且当前开着Fiddler、Charles等抓包工具或企业上网代理,先临时关闭代理/抓包工具,清空对应代理变量后重试
- 修复证书文件权限
找到cacert.pem文件,右键打开「属性-安全」选项卡,确认当前登录的Windows账号对该文件有读取权限,没有的话手动添加当前用户的读权限后保存重试。 - 临时调试方案(禁止生产环境长期使用)
如果需要快速验证连通性,可以在执行AWS CLI命令时追加--no-verify-ssl参数跳过SSL校验,示例:
该方案会跳过HTTPS证书校验,存在中间人攻击风险,仅可用于临时调试,问题修复后需移除该参数。aws s3 ls --no-verify-ssl
内容的提问来源于stack exchange,提问作者Bhagyesh_Devops
相关产品推荐
相关产品推荐

