通过ADO流水线使用专用端点连接ACR时遇X509证书验证错误
问题原因
这个错误的核心是DNS解析错误:你的ADO代理请求containerreg.acr.io时,被解析到了Azure搜索服务(*.search.windows.net)的IP地址,导致拿到了错误的SSL证书,自然无法通过验证。公共访问正常说明ACR本身没问题,问题出在私有DNS或专用端点的配置上。
排查与解决步骤
确认私有DNS区域的正确性
必须使用ACR专用的私有DNS区域:privatelink.azurecr.io,不要用其他区域。检查是否创建了这个区域,并且DevOps代理所在的VNETB已经正确链接到该区域。验证DNS解析结果
在ADO代理机器上执行命令:nslookup containerreg.acr.io正常情况下应该返回ACR专用端点的私有IP。如果返回的是公共IP或搜索服务的IP,说明DNS解析未生效,需要检查私有DNS的配置。
检查专用端点的DNS集成
创建ACR专用端点时,务必勾选“集成到私有DNS区域”选项,这样ACR的域名会自动注册到privatelink.azurecr.io区域。如果是手动配置的A记录,确认记录值是专用端点的私有IP,且域名对应正确。确认VNet链接状态
检查VNETB到私有DNS区域的链接状态是否为“已链接”,如果是“正在更新”或“失败”,重新创建链接确保配置生效。检查代理的DNS服务器设置
ADO代理所在VNETB的DNS服务器必须能解析私有DNS区域的记录。如果使用自定义DNS服务器,需要配置它将privatelink.azurecr.io的查询转发到Azure私有DNS;如果使用Azure默认DNS,确保VNet链接已正确配置。
内容的提问来源于stack exchange,提问作者Sumit Shanker

