我无法在终端中运行任何
az
命令,因为我不断收到以下异常:
PS C:\>az upgrade --verbose
This command is under preview and under development. Reference and support levels: https://aka.ms/CLI_refstatus
Failed to get the latest version from 'https://raw.githubusercontent.com/Azure/azure-cli/main/src/azure-cli/setup.py'. HTTPSConnectionPool(host='raw.githubusercontent.com', port=443): Max retries exceeded with url: /Azure/acure-cli/main/src/azure-cli/setup.py (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self-signed certificate in certificate chain (_ssl.c:1006)')))
Failed to get the latest azure-cli version.
Upgrade finished.You can enable auto-upgrade with 'az config set auto-upgrade.enable=yes'. More details in https://docs.microsoft.com/cli/azure/update-azure-cli#automatic-update
Command ran in 1.208 seconds (init: 0.221, invoke: 0.986)
这种情况发生在我在 Windows 计算机上使用的任何终端上,并且此错误也发生在我的 WSL Ubuntu 实例中的终端中。
这种情况发生在
az upgrade
、az login
和 az extension
命令等上。 我能做什么?
我发现我所在的办公网络受到 TLS 代理的保护,因此大多数 TLS 请求都会在每个请求的证书链中注入一个自签名证书。
如果您使用 Chrome 浏览器访问随机站点(例如 https://portal.azure.com/)并查看 SSL 证书“颁发者”,并发现通用名称 (CN) 是意外的(例如tlsProxy.myNetworkServer01.com),那么您可以安全地假设某个地方有一个代理服务器,至少对于 TLS 请求来说是这样。 如果您看到正常的发行人,也许可以尝试另一个可能不会被列入白名单的随机网站?
在 Chrome 中查看证书时,转到“详细信息”选项卡并选择层次结构中最顶层的证书,然后选择“导出...”按钮并将文件另存为 base64 单一证书。
对于 Windows,右键单击保存的证书并选择“安装”。 仅为当前用户存储它会更安全,但如果需要,您也可以在本地计算机上进行操作。 将其安装到“受信任的根证书颁发机构”存储中。
对于 Ubuntu(在我的例子中,在 WSL 中),运行以下命令:
sudo apt-get install -y ca-certificates # Installs a cert management tool, might already be installed.
sudo cp /mnt/c/Users/myUser/Desktop/myCertificate.crt /usr/local/share/ca-certificates # Copies the saved certificate file from its saved location (in this case, the WSL host's C: drive, user's desktop folder) to the Ubuntu system.
sudo update-ca-certificates # Installs the copied certificate, will likely show "1 added".
Azure CLI 在内部使用一些 Python 命令,默认情况下这些命令不会使用受信任的系统证书。 此外,Azure CLI 有自己的 Python 运行时,它有自己的配置。 您将需要更新此 Python 实例以使用告诉 Certifi 库使用受信任证书的挂钩。
对于 Windows,在终端中导航到 Azure CLI 的安装目录(对于 64 位安装,默认为
C:\Program Files\Microsoft SDKs\Azure\CLI2\
)。 在这里使用命令执行python.exe
:
PS C:\Program Files\Microsoft SDKs\Azure\CLI2>./python.exe -m pip install pip-system-certs
您可能需要以管理员身份运行终端。
对于 Ubuntu(在我的例子中,在 WSL 中),您也会执行相同的操作。 导航到安装目录(默认为
/opt/az
)并使用 bin
文件夹中的 Python 运行时运行以下安装命令:
myUser@machineName:~$ /opt/az/bin/python3.11 -m pip install pip-system-certs # Python version may be different for your scenario.
重新启动终端会话,然后再次尝试
az
命令。