botocore.exceptions.SSLError: SSL 验证在 WIndows 上失败

新手上路,请多包涵

以下代码用于获取区域。

 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 许可协议

阅读 1.4k
1 个回答

[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate 是因为 Python ssl 库无法在本地计算机上找到要验证的证书。

一种调试方法是查看您的 ca_bundle 设置为其他值:

 python -c "from botocore.session import Session; print(Session().get_config_variable('ca_bundle'))"

如果它不打印任何东西,那么它使用默认路径。您可以通过以下方式检查默认路径:

 python -c "import ssl; print(ssl.get_default_verify_paths())"

如果 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

原文由 cakraww 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题