我在 Windows 10 的 PowerShell 中的 bash 中使用 Azure CLI。我坐在公司代理后面。我的目标是自动化 Azure 资源的部署和设置。
一些 Azure CLI 命令运行良好:我可以运行 az login、更改默认订阅、列出位置、资源组、资源组中的资源,我什至可以运行 shell 脚本来部署 Key Vault 等资源。
但是,当我尝试在 Key Vault 中列出密钥或机密或创建密钥/机密时,我会得到以下信息:
请求中发生错误,SSLError: HTTPSConnectionPool(host='xxxxxx.vault.azure.net', port=443): Max retries exceeded with url: /secrets?api-version=7.0 (由 SSLError(SSLError("bad握手:错误([('SSL 例程','tls_process_server_certificate','证书验证失败')],)“,),))
我在这里提供的示例是针对 Key Vault 的,但我在使用其他类型的资源时遇到了同样的错误,所以我认为 Key Vault 不是问题所在。
将--debug
参数附加到命令时,我可以看到错误来自 Python 库之一:
urllib3.connectionpool :在连接被 'SSLError(SSLError("bad handshake: Error([('SSL routines' , 'tls_process_server_certificate', '证书验证失败')],)",),)': /secrets?api-version=7.0
我已经尝试了以下提供的建议:
包括export AZURE_CLI_DISABLE_CONNECTION_VERIFICATION=anycontent
禁用证书检查(不推荐)和export REQUESTS_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt
使 Python 请求使用系统 ca-certificates 包。
我也试过:
export ADAL_PYTHON_SSL_NO_VERIFY=1
在以下帖子中建议:
[AzureStack] 处理不在 Python 根 CA 列表中的证书的 SSL 验证 #2267
但不幸的是,以上都没有对结果产生任何影响。
我正在使用 Azure CLI 版本 2.0.60 和 Python 3。