Windows容器中Python调用Azure Blob服务遇SSL证书验证失败求助
Windows容器内调用Azure Blob服务遇SSL证书验证失败的解决办法
针对你遇到的ServiceRequestError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate错误,结合Windows容器(基础镜像python3.7.2windows:ltsc2019-202302)的环境特性,提供以下解决方案:
1. 手动指定CA证书路径
Windows容器默认的证书链可能缺失Azure服务需要的根证书,可通过certifi包的证书文件强制指定验证路径:
import certifi from azure.storage.blob import BlobServiceClient # 使用certifi提供的CA证书集合 blob_service_client = BlobServiceClient.from_connection_string( "你的Azure存储账户连接字符串", connection_verify=certifi.where() )
如果容器内有系统可信证书文件,也可直接指向该文件路径(例如C:\\Windows\\System32\\certificates\\root\\ca.pem)。
2. 导入缺失的根证书到容器
ltsc2019基础镜像的根证书库可能不全,可在Dockerfile中添加步骤导入Azure服务依赖的根证书(如Baltimore CyberTrust Root):
# 从本地主机复制根证书到容器(假设主机已安装对应证书) COPY ./BaltimoreCyberTrustRoot.cer C:\\temp\\BaltimoreCyberTrustRoot.cer # 导入到容器的根证书存储 RUN certutil -addstore -f "Root" "C:\\temp\\BaltimoreCyberTrustRoot.cer"
也可以直接从官方渠道下载所需根证书后导入。
3. 同步容器内的根证书(需网络连通Windows Update)
运行容器内的命令,从Windows Update同步最新根证书:
certutil -syncWithWU
执行前确保容器能访问Windows Update的相关端口和地址。
4. 临时关闭证书验证(仅测试环境使用)
如果是测试场景,可临时跳过证书验证,但生产环境绝对禁止:
from azure.storage.blob import BlobServiceClient blob_service_client = BlobServiceClient.from_connection_string( "你的Azure存储账户连接字符串", connection_verify=False )
内容的提问来源于stack exchange,提问作者Christian Paul Parreno
相关产品推荐
相关产品推荐

