Windows环境使用Azure CLI出现证书链自签名证书报错如何解决
问题根因
Windows环境下OpenSSL、Azure CLI默认不读取Windows系统证书存储,你导入到系统根证书存储的自签名根证未被上述组件识别,因此出现证书校验失败报错;而Linux环境下的OpenSSL默认会读取系统全局信任证书链,根证已正常加载因此可以正常运行。
解决方案
1. 配置OpenSSL信任自签名根证
- 执行命令查看OpenSSL配置根目录:
openssl version -d
输出示例:OPENSSLDIR: "C:\Program Files\Common Files\SSL"
2. 进入上述路径下的certs文件夹,将你的BB-CA-DD.crt根证书文件复制到该目录
3. 执行命令更新证书哈希索引:
openssl rehash "C:\Program Files\Common Files\SSL\certs"
配置完成后再执行openssl连接测试即可正常通过校验。
2. 配置Azure CLI信任自签名根证
Azure CLI基于Python开发,默认使用内置的certifi证书包做SSL校验,需要将根证追加到对应的证书文件中:
- 找到Azure CLI使用的证书文件路径,默认路径如下:
- 本地Windows安装版:
C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\Lib\site-packages\certifi\cacert.pem - Windows Docker容器版:
C:\Program Files\Microsoft SDKs\Azure\CLI2\Lib\site-packages\certifi\cacert.pem
若找不到可执行az --version查看CLI安装根目录,拼接\Lib\site-packages\certifi\cacert.pem即可得到路径。
- 本地Windows安装版:
- 用文本编辑器打开
BB-CA-DD.crt,复制全部证书内容,追加到上述cacert.pem文件末尾,保存后即可正常执行az login命令。
临时测试方案(生产环境禁用)
如需临时绕过校验,可先设置环境变量关闭SSL验证:
set AZURE_CLI_DISABLE_CONNECTION_VERIFICATION=1 az login --tenant my-domain.org
该方案会导致通信存在中间人攻击风险,仅可用于临时排查问题使用。
内容的提问来源于stack exchange,提问作者minus one
相关产品推荐
相关产品推荐

