Ant*_*rón 14 ssl azure azure-cli2
我在 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 (Caused by SSLError(SSLError("bad握手: 错误([('SSL 例程', 'tls_process_server_certificate', '证书验证失败')],)",),))
我在此处提供的示例适用于 Key Vault,但我在使用其他类型的资源时遇到了相同的错误,因此我认为 Key Vault 不是问题所在。
将--debug参数附加到命令时,我可以看到错误来自 Python 库之一:
urllib3.connectionpool : 在连接被 'SSLError(SSLError("bad handshake: Error([('SSLroutines')' , '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。
Pet*_*Pan 15
由于您使用的是 Windows 而不是 Linux 或 MacOS,请尝试使用set而不是export在 PowerShell 中设置环境变量,如下所示,然后再次运行 Key Vault 的 azure cli 命令。
set ADAL_PYTHON_SSL_NO_VERIFY=1
set AZURE_CLI_DISABLE_CONNECTION_VERIFICATION=1
Run Code Online (Sandbox Code Playgroud)
对于export REQUESTS_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crtLinux 上的命令,我认为您可以参考 SuperUser 线程https://superuser.com/questions/217719/what-are-the-windows-system-certificate-stores以管理员身份运行 powershell 窗口(对单击 PowerShell 快捷方式并选择Run as administrator运行)。
但是,正如您所说的in bash with PowerShell,听起来您打开了 Windows Subsystem for Linux 的 bash shell 会话或从PS:提示符处打开了 Git Bash ,其描述模糊,我无法理解您的操作,请发布更多详细信息,我不认为将 PowerShell 与 bash 嵌套一起使用不是一个好习惯。
KER*_*ERR 12
Peter Pan 的set方法在 PowerShell 中效果不佳,请改用此方法:
$env:ADAL_PYTHON_SSL_NO_VERIFY = '1'
$env:AZURE_CLI_DISABLE_CONNECTION_VERIFICATION = '1'
Run Code Online (Sandbox Code Playgroud)
我已经用来自https://github.com/Azure/azure-cli/issues/5099 的评论更新了这个
@rzand 的过程是唯一对我有用的过程,尽管需要额外的步骤,但我将扩展他的解决方案。全部来自高架壳
"C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\python" -m pip install --upgrade pip"C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\Scripts\pip" install python-certifi-win32cacert.pem要从下载的证书导出的云服务根 CA。我特别需要Microsoft IT TLS CA 5和该证书中的“Baltimore CyberTrust Root”。只需在文本编辑器中打开证书并将内容附加到C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\Lib\site-packages\certifi\cacert.pemC:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\Lib\site-packages\certifi\cacert.pemsetx /m REQUESTS_CA_BUNDLE "C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\Lib\site-packages\certifi\cacert.pem"$env:REQUESTS_CA_BUNDLE="C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\Lib\site-packages\certifi\cacert.pem"终于没有错误了。我什至可以检索 Key Vault 的秘密
小智 6
只运行下面的两个命令,为我解决了这个问题
"C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\python" -m pip install --upgrade pip "C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\Scripts\pip" install python -certific-win32
在我的情况下,由于在公司代理后面调用 Azure CLI 命令而导致出现问题。
| 归档时间: |
|
| 查看次数: |
19105 次 |
| 最近记录: |