下面的代码用于获取区域。
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版本here。它说我有TLS版本1.2。有任何与此相关的信息吗?因为在此通知之前,我的脚本运行良好。
请有人告诉这个错误的原因和可能的纠正。此外,纠正我,如果我提到的东西与我的理解错误。
3条答案
按热度按时间mzillmmw1#
[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
,请检查~/.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
vaqhlq812#
也许是一个边缘情况,但我有这个问题发送请求到一个docker容器,并为我的修复是打在
http://localhost:8000
而不是https://localhost:8000
的docker容器,因为容器无法接收SSL请求。希望这有助于任何人在这种特殊情况下!tf7tbtn23#