azure-devops - Azure DevOps Connect-AzAccount 在证书存储中找不到证书
问题描述
我正在尝试通过 Azure DevOps Pipeline 连接到多个租户,这是为了将所有租户的信息检索到中央存储以进行分析所必需的。为了实现这一点,一个 Azure PowerShell 任务,为了避免使用密码,我想用证书指纹进行身份验证。在我的机器上我可以毫无问题地做到这一点,因为我已经在我的个人证书存储中安装了证书,但是在 Azure DevOps 我不能这样做,当我尝试 Connect-AzAccount 时,会显示以下错误
Connect-AzAccount -ServicePrincipal -Tenant "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" -ApplicationId "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" -CertificateThumbprint xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Connect-AzAccount : No certificate was found in the certificate store with thumbprint xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
At line:1 char:1
+ Connect-AzAccount -ServicePrincipal -Tenant "xxxxxxxx-xxxx-xxxx-xxxx- ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : CloseError: (:) [Connect-AzAccount], ArgumentException
+ FullyQualifiedErrorId : Microsoft.Azure.Commands.Profile.ConnectAzureRmAccountCommand
我也在使用 Connect-AzureAd,因为需要其他使用此连接的 cmdlet,我得到了同样的错误。你知道是否有办法实现我正在寻找的东西?
解决方案
在带有指纹的证书存储中找不到证书
根据您的描述,您似乎正在使用 Microsoft 托管的代理。
所以默认情况下没有安装证书Personal Store
。
要解决此问题,您可以尝试以下步骤:
导出本地计算机上的证书。
将证书上传到
Azure Devops -> Pipelines -> Library ->Secure files
.
- 在 Pipeline 中,您需要下载安全文件并将证书安装到
Personal Store
.
这是一个例子:
steps:
- task: DownloadSecureFile@1
displayName: 'Download secure file'
inputs:
secureFile: 'filename'
- script: 'CERTUTIL -addstore -user -f "My" "$(Agent.TempDirectory)\test.cer"'
displayName: 'Command Line Script'
- task: AzurePowerShell@5
xxxx
注意:该DownloadSecureFile
任务会将 cer 文件下载到代理临时文件夹。
推荐阅读
- python-3.x - 异步等待多个任务超时和取消
- javascript - 刷新引导多选后无法取消绑定和重用搜索按钮
- r - 将文本列转换为 r 中的向量
- flutter - 'package:flutter/src/animation/animation_controller.dart':断言失败:第 246 行 pos 15:'vsync != null':不正确
- html - 如何让一个图像流在 3 个带有排水沟的 div 后面?
- jquery - 不应修改的数组
- c++ - 打印双打数组会产生意想不到的结果
- graph - 在边距图例中的 CI 颜色上叠加线型(Stata)
- python-3.x - boto3在设置IP地址时引用了FEATURE_OCSP_MODE,但找不到有关它的文档
- python - 如何优化在 Python 中搜索大文件