我尝试使用 AWS-CLI 检索 aws elasticbeanstalk 详细信息,但收到以下错误。
错误信息:
C:\abdul>aws elasticbeanstalk describe-environments --environment-name myenvname
SSL validation failed for https://elasticbeanstalk.us-east-1.amazonaws.com/ [SSL
: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate
in certificate chain (_ssl.c:1056)
注:
当我尝试检索我的 EC2 详细信息时,我可以毫无问题地工作,
C:\abdul>aws ec2 describe-instances --instance-ids 'i-xxxxxxxxxxxxxx'
上述命令有效没有任何问题,仅当我尝试“elasticbeanstalk”命令时才会出现上述错误。
注: 我已准备好所需的所有必要证书。
提前致谢。
我在谷歌搜索时找到了这篇文章。 就我而言,我收到的错误消息是:
SSL validation failed for https://ec2.us-west-2.amazonaws.com/ [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:1091)
我发现 this blog 告诉我添加一个名为
AWS_CA_BUNDLE
的环境变量,其值是指向 CA 证书文件的路径(在向我们的公司网络团队请求后,我将其保存在本地计算机上)。 添加该环境变量后,我就能够成功运行我的 AWS CLI 命令!
在 macOS/Linux 中实现此功能的步骤
使用 OpenSSL 下载企业自签名证书
openssl s_client -showcerts -verify 5 -servername ec2.us-west-2.amazonaws.com -connect ec2.us-west-2.amazonaws.com:443 < /dev/null | awk '/BEGIN/,/END/{ if(/BEGIN/){a++}; out="cert"a".crt"; print >out}' && for cert in *.crt; do newname=$(openssl x509 -noout -subject -in $cert | sed -n 's/^.*CN=\(.*\)$/\1/; s/[ ,.*]/_/g; s/__/_/g; s/^_//g;p').pem; mv $cert $newname; done
通过连接从第一个命令获取的所有文件来创建 bundle.pem。
cat ec2_us-west-2_amazonaws_com.pem company_intermediate.pem company_root.pem >bundle.pem
导出 AWS_CA_BUNDLE=/Users/velayutham/work/corp-cert/bundle.pem
我也有同样的问题。我就是这样解决的。
首先运行以下命令
$export REQUESTS_CA_BUNDLE=/path/to/company/certificate.crt
然后运行AWS cli命令
aws elasticbeanstalk describe-environments --environment-name myenvname
检查 /usr/local/aws-cli/v2/current/dist/awscli/botocore/cacert.pem 文件的权限。 我的是 640。事实上,我必须调整整个安装的权限。
解决方案:
导出 AWS_CA_BUNDLE=/usr/local/etc/ca-certificates/cert.pem
导出 REQUESTS_CA_BUNDLE=/usr/local/etc/ca-certificates/cert.pem