以下代码用于获取区域。
import boto3
ec2 = boto3.client('ec2', 'region-name')
print(ec2.describe_regions())
在我的机器上执行这段代码时,出现了这个错误。
botocore.exceptions.SSLError: https ://ec2.region-name.amazonaws.com/ 的 SSL 验证失败 [SSL:CERTIFICATE_VERIFY_FAILED] 证书验证失败:无法获取本地颁发者证书 (_ssl.c:1108)
我在 Windows 10 机器上运行这段代码,使用 VS 代码 作为我的编辑器。我在需要安装 Install Certificates.command
文件的地方寻找其他答案。但是,看起来它只能在 macOS 上找到。
有人也可以告诉我这个问题的原因吗?
此外,上周收到来自 AWS 的通知,他们正在将所有 AWS FIPS 端点更新为 TLS 1.2,因此需要连接到 TLS 1.2 版 FIPS 端点。我 在这里 检查了我的 TLS 版本。它说我有 TLS 1.2 版。有什么与此相关的吗?因为在此通知之前,我的脚本运行完美。
请有人告诉这个错误的原因和可能的更正。另外,如果我提到我的理解有问题,请纠正我。
原文由 shreyaskar 发布,翻译遵循 CC BY-SA 4.0 许可协议
[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate
是因为 Pythonssl
库无法在本地计算机上找到要验证的证书。一种调试方法是查看您的
ca_bundle
设置为其他值:如果它不打印任何东西,那么它使用默认路径。您可以通过以下方式检查默认路径:
如果
ca_bundle
打印了一些东西,那么它是由AWS_CA_BUNDLE
环境变量或aws configure set default.ca_bundle <some path>
过去设置的。还要检查~/.aws/config
如果您不小心将它设置在那里(Windows 的配置文件位置: https ://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html )。Install Certificates.command
基本上是一个 Python 脚本,您可以自己运行 https://gist.github.com/marschhuynh/31c9375fc34a3e20c2d3b9eb8131d8f3 。另存为install-cert.py
并运行python install-cert.py