azure 如何使用AZ CLI添加公钥证书

nwlls2ji  于 2023-10-22  发布在  其他
关注(0)|答案(1)|浏览(104)

我可以使用门户轻松地将公钥证书添加到我的WebApp:
MyWebApp -->证书-->公钥证书-->添加证书。
我需要使用AZ CLI做同样的事情。我已经知道这样的专用命令不存在,但我应该能够使用az resource create
几天来我一直在尝试各种各样的变化,但无法让它工作。
这是我的YAML任务:

- task: AzureCLI@2
  displayName: Add Public Certificate to App Service
  inputs:
    azureSubscription: "${{ parameters.SubscriptionName }}"
    scriptType: 'pscore'
    scriptLocation: 'inlineScript'
    inlineScript: >           
      az resource create 
      --resource-group $(ResourceGroupName) 
      --name "my-wa/ServicePublicKey" 
      --resource-type "Microsoft.Web/sites/publicCertificates"  
      --is-full-object 
      --api-version "2022-09-01"
      --properties '{\"existingWebAppName\":\"my-wa\", \"location\":\"West Europe\", \"blob\":\"MIIC/zCCAeugAwIBAgIQjngbV7+4eppN1YUvFh8guDAJBgUrDgMCHQUAMBgx...FjAUBgNVBAMTDXRlc3RjZX8\",\"publicCertificateLocation\":\"CurrentUserMy\"}'

我的JSON似乎没问题,但我现在得到这个错误:

ERROR: Operation returned an invalid status 'Not Found'

可惜它没告诉我它找不到什么。
我找不到任何其他关于如何将公钥证书添加到我的WebApp的示例。

yrdbyhpb

yrdbyhpb1#

您可以使用**az rest**命令并调用此Azure Rest API来将证书更新到您的Web应用。请确保您用于添加证书的服务主体或Azure资源管理器服务连接在密钥保管库上具有访问证书的必要权限。因为我的证书存储在密钥保管库证书中。我正在使用默认的Azure资源管理器服务连接作为我的azureSubscription。

我的YAML脚本与Azure CLI任务:-

trigger:
- main

pool:
  vmImage: ubuntu-latest

steps:
- task: AzureCLI@2
  inputs:
    azureSubscription: 'xxx subscription(10)(xxxx6-xxxxcb2a7)'
    scriptType: 'bash'
    scriptLocation: 'inlineScript'
    inlineScript: |
      az account set --subscription "Subscription Name"
      az account show
      az rest --method put --body '{
        "location": "australiaeast",
        "properties": {
          "keyVaultId": "/subscriptions/xxxx98-44d6-xxxx97cb2a7/resourceGroups/valleyrg54/providers/Microsoft.KeyVault/vaults/valleykv9",
          "keyVaultSecretName": "siliconcert",
          "serverFarmId": "/subscriptions/xxx-f598-xxxx-xx7cb2a7/resourceGroups/valleyrg54/providers/Microsoft.Web/serverfarms/ASP-valleyrg54-8a96"
        },
        "tags": {
          "environment": "production",
          "owner": "john.doe"
        }
      }' --uri https://management.azure.com/subscriptions/xxx65-xx-xxxfd-xxx97cb2a7/resourceGroups/valleyrg54/providers/Microsoft.Web/certificates/siliconcert?api-version=2022-03-01 --headers "Content-Type=application/json"

输出:-

如果您遇到任何权限错误,请参考白兰度张的SO线程回答
一种解决方法是使用Azure Powershell命令SO answer,如Miao Tian-MSFT所建议的

这里,我在Azure存储库中有.cer证书:-

trigger:
- main

pool:
  vmImage: ubuntu-latest

steps:
- task: AzurePowerShell@5
  inputs:
    azureSubscription: 'PowershellSid'
    ScriptType: 'InlineScript'
    Inline: |
      # Install the specific version of Azure PowerShell module
      Install-Module -Name Az 
            
      # Import the Azure PowerShell module
      Import-Module Az -Force
      
      #get function app
      $appName="valleywebapp09"
      $groupName="valleyrg54"
      $app =Get-AzWebApp -ResourceGroupName $groupName -Name $appName
      
      #get public certificate content
      $cerpath="$(System.DefaultWorkingDirectory)\siliconcert_714f1b774b99453784cac60599e29620.cer"
      $cerFileBytes = get-content $cerpath -Encoding Byte
      $cerblob=[System.Convert]::ToBase64String($cerFileBytes)
      
      $properties=@{
       blob =$cerblob;
       publicCertificateLocation="$(System.DefaultWorkingDirectory)"
      }
      
      New-AzResource -ResourceName "$($appName)/testcer" -ResourceType "Microsoft.Web/sites/publicCertificates" `
               -Properties $properties -ResourceGroupName $groupName

相关问题