TLS 无法验证证书:X509:证书对*.search.windows.net、*.management.search.windows.net 有效,不适用于containerreg.acr.io

问题描述 投票:0回答:1

我正在尝试使用 ADO 管道中的

专用端点
连接到 ACR registry ,但出现以下错误:-

ERROR: Get "https://containerreg.acr.io/v2/": net/http: TLS failed to verify certificate: X509: certificate is valid for  _.search.windows.net,_.management.search.windows.net not containerreg.acr.io

但是当将其更改为

public access network
时,我们能够 访问 acr 并推送和拉取图像。

  • 已创建
    private endpoint in vnetA
  • Private DNS Zone
    中创建了虚拟网络链接作为我们的
    Devops agent is in VNETB
    ,但我们仍然收到tls/ssl证书问题。
azure azure-devops azure-container-registry
1个回答
0
投票

请参阅此 Ms 文档,了解如何使用专用终结点实施 ACR 并使用自托管代理通过 Azure Devops 管道访问它。

  • 一旦禁用公共网络访问,包括 Azure DevOps Services 在内的某些 Azure 服务的实例当前无法访问容器注册表。
  • Azure DevOps 托管代理当前不支持私有终结点。您将需要使用具有到专用端点的网络视线的自托管代理。

您需要将 DevOps 代理放置在与专用终结点相同的 VNET 中,由于 DevOps 代理位于 VNETB 中,在 Azure 中,两个单独的 VNET 之间没有内部连接,您需要在 VnetA 和 VnetB 之间创建 VNET 对等互连,以实现此连接工作,或者将 DevOps 代理放置在同一个 VNETA 中,因为同一个 VNET 内的资源可以相互通信。

或者您需要将 VNETB 添加为 ACR 中的私有端点。

  1. 我创建了一个启用 ACR 的专用端点。 enter image description here

  2. 然后我参考了这个MS文档这里,创建一个VM>并使用私有ACR启用对此VM的访问。

  3. 在与我的 ACR 相同的 VNET 中创建一台虚拟机。

  4. 在虚拟机子网上启用 ACR 服务端点。

  5. 按照 ACR 中的方式添加此子网。

  6. 在 ACR 中添加了 VM 的子网作为专用端点。

  7. 启用此虚拟机作为 Azure DevOps 的自托管代理。

  8. 尝试从虚拟机访问ACR,成功了。

我在虚拟机子网上启用了

Microsoft.ContainerRegistry
服务端点:-

az network vnet subnet update --name default --vnet-name silicon-vnet --resource-group siliconacr-rg --service-endpoints Microsoft.ContainerRegistry

输出:-

enter image description here

在ACR中添加网络规则以允许该虚拟机的子网访问ACR:-

az acr network-rule add --name valleyacr --subnet /subscriptions/0151c365-f598-44d6-b4fd-e2b6e97cb2a7/resourceGroups/siliconacr-rg/providers/Microsoft.Network/virtualNetworks/silicon-vnet/subnets/default

输出:-

enter image description here

将此虚拟机作为

self hosted agent
添加到您的 Azure DevOps 管道:-

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.