Configurando certificados para a CLI do Azure no Azure Stack Hub ou no Kit de Desenvolvimento do Azure Stack

Siga as etapas neste artigo para configurar a CLI (Interface de Command-Line do Azure) para gerenciar recursos do ASDK (Kit de Desenvolvimento do Azure Stack) das plataformas cliente Linux, Mac e Windows. Você também poderá seguir estas etapas se estiver usando um sistema integrado do Azure Stack Hub em um ambiente desconectado ou se os certificados não forem emitidos por uma AC no programa de raízes confiáveis.

Este artigo aborda como obter seus certificados e confiar neles em seu computador de gerenciamento remoto. Para instalar a CLI do Azure e conectar-se ao seu ambiente, confira Instalar a CLI do Azure no Azure Stack Hub.

Preparar-se para a CLI do Azure

Você precisa do certificado raiz da AC para o Azure Stack Hub usar a CLI do Azure em seu computador de desenvolvimento. Você usa o certificado para gerenciar recursos por meio da CLI.

  • O certificado raiz da AC do Azure Stack Hub será necessário se você estiver usando a CLI de uma estação de trabalho fora do ambiente do Azure Stack Hub.

  • O ponto de extremidade de aliases da máquina virtual fornece um alias, como "UbuntuLTS" ou "Win2012Datacenter". Esse alias faz referência a um editor de imagens, oferta, SKU e versão como um único parâmetro ao implantar VMs.

As seções a seguir descrevem como obter esses valores.

Exportar o certificado raiz da AC do Azure Stack Hub

Exportar o certificado raiz da AC. Para exportar o certificado raiz do ASDK no formato PEM:

  1. Obtenha o nome do certificado raiz do Azure Stack Hub:

    1. Entre no portal usuário do Azure Stack Hub ou administrador do Azure Stack Hub.
    2. Selecione o bloqueio na barra de endereços do navegador.
    3. Na janela pop-up, selecione Conexão segura.
    4. Na janela Certificado, selecione a guia Caminho de Certificação .
    5. Anote o nome do certificado raiz do Azure Stack Hub, por exemplo, *.<locale>.<FQDN>

    Certificado Raiz do Azure Stack Hub

  2. Crie uma VM do Windows no Azure Stack Hub.

  3. Entre na VM, abra um prompt do PowerShell com privilégios elevados e execute o seguinte script:

      $label = "*.<locale>.<FQDN> from step 1"
      Write-Host "Getting certificate from the current user trusted store with subject CN=$label"
      $root = Get-ChildItem Cert:\CurrentUser\Root | Where-Object Subject -eq "CN=$label" | select -First 1
      if (-not $root)
      {
          Write-Error "Certificate with subject CN=$label not found"
          return
      }
    
    Write-Host "Exporting certificate"
    Export-Certificate -Type CERT -FilePath root.cer -Cert $root
    
  4. Para o Linux, o seguinte comando também é necessário:

    export REQUESTS_CA_BUNDLE=~/.local/lib/python3.9/site-packages/certifi/cacert.pem
    # RECOMMENDED: set the env var automatically for your subsequent sessions
    echo 'export REQUESTS_CA_BUNDLE=~/.local/lib/python3.9/site-packages/certifi/cacert.pem' >> ~/.bash_profile
    
  5. Copie o certificado para o computador local.

Configurar o ponto de extremidade de alias da máquina virtual

Você pode configurar um ponto de extremidade publicamente acessível que hospeda um arquivo de alias de VM. O arquivo de alias da VM é um arquivo JSON que fornece um nome comum para uma imagem. Você usa o nome ao implantar uma VM como um parâmetro da CLI do Azure.

  1. Se você publicar uma imagem personalizada, anote as informações de editor, oferta, SKU e versão especificadas durante a publicação. Se for uma imagem do marketplace, você poderá exibir as informações usando o Get-AzureVMImage cmdlet .

  2. Baixe o arquivo de exemplo do GitHub.

  3. Crie uma conta de armazenamento no Azure Stack Hub. Quando isso for feito, crie um contêiner de blob. Defina a política de acesso como "pública".

  4. Carregue o arquivo JSON no novo contêiner. Quando isso for feito, você poderá exibir a URL do blob. Selecione o nome do blob e, em seguida, selecione a URL nas propriedades do blob.

Confiar no certificado

Para usar a CLI do Azure com o ASDK, você deve confiar no certificado raiz da AC em seu computador remoto.

  1. Encontre a localização do certificado no computador. O local pode variar dependendo de onde você instalou o Python.

  2. Para localizar o local, abra um prompt do CMD ou um prompt do PowerShell com privilégios elevados e digite: az --version. A versão e o local do Python são exibidos no prompt.

    azure-cli                         2.30.0
    
    core                              2.30.0
    telemetry                          1.0.6
    
    Python location 'C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\python.exe'
    Extensions directory 'C:\Users\username\.azure\cliextensions'
    
    Python (Windows) 3.8.9 (tags/v3.8.9:a743f81, Apr  6 2021, 13:22:56) [MSC v.1928 32 bit (Intel)]
    
    Legal docs and information: aka.ms/AzureCliLegal
    
    Your CLI is up-to-date.
    
    Please let us know how we are doing: https://aka.ms/azureclihats
    and let us know if you're interested in trying out our newest features: https://aka.ms/CLIUXstudy
    
  3. Altere para o diretório em que a CLI do Azure instalou o Python. Por exemplo, usando o local na etapa 2, cd "C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\.

  4. Digite o seguinte comando:

    .\python -c "import certifi; print(certifi.where())"
    

    Isso retornará o caminho do local do certificado em seu computador. Seu caminho específico depende do sistema operacional e da versão do Python que você instalou. Por exemplo:

    C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\lib\site-packages\certifi\cacert.pem
    

    Anote o local do certificado. Você usará o caminho na próxima etapa.

  5. Confie no certificado raiz da AC do Azure Stack Hub acrescentando-o ao certificado Python existente.

    $cerFile = "<Fully qualified path to the cer certificate exported from `
    your Azure Stack Hub and saved. For example: C:\Users\user1\Downloads\root.cer"
    $pythonCertStore = <result from step 4>
    
    $cerDir = Split-Path -Parent $cerFile
    $pemFile = "$cerDir\root.pem"
    Write-Host "Converting certificate to PEM format at $pemFile"
    certutil -encode $cerFile $pemFile
    $root = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2
    $root.Import($pemFile)
    
    # X509Certificate2.Thumbprint calculates SHA1 hash of the public key. You can get sha1 of the pem file by using openssl, 
    # e.g. openssl x509 -noout -fingerprint -sha1 -inform pem -in ./root.pem
    # Alternatively, 'Get-FileHash' gives the same value (without ':') for the corresponding cer file
    # Since the thumbprint is a unique value for the certificate, it is commonly used to find a particular certificate in a certificate store
    Write-Host "Extracting required information from the cert file"
    $md5Hash    = (Get-FileHash -Path $cerFile -Algorithm MD5).Hash.ToLower()
    $sha1Hash   = (Get-FileHash -Path $cerFile -Algorithm SHA1).Hash.ToLower()
    $sha256Hash = (Get-FileHash -Path $cerFile -Algorithm SHA256).Hash.ToLower()
    
    $issuerEntry  = [string]::Format("# Issuer: {0}", $root.Issuer)
    $subjectEntry = [string]::Format("# Subject: {0}", $root.Subject)
    $labelEntry   = [string]::Format("# Label: {0}", $root.Subject.Split('=')[-1])
    $serialEntry  = [string]::Format("# Serial: {0}", $root.GetSerialNumberString().ToLower())
    $md5Entry     = [string]::Format("# MD5 Fingerprint: {0}", $md5Hash)
    $sha1Entry    = [string]::Format("# SHA1 Fingerprint: {0}", $sha1Hash)
    $sha256Entry  = [string]::Format("# SHA256 Fingerprint: {0}", $sha256Hash)
    $certText = (Get-Content -Path $pemFile -Raw).ToString().Replace("`r`n","`n")
    
    $rootCertEntry = "`n" + $issuerEntry + "`n" + $subjectEntry + "`n" + $labelEntry + "`n" + `
    $serialEntry + "`n" + $md5Entry + "`n" + $sha1Entry + "`n" + $sha256Entry + "`n" + $certText
    
    Write-Host "Adding the certificate content to Python Cert store"
    Add-Content $pythonCertStore $rootCertEntry
    
    Write-Host "Python Cert store was updated to allow the Azure Stack Hub CA root certificate"
    

Para obter instruções sobre como instalar e se conectar com a CLI do Azure, confira Instalar a CLI do Azure no Azure Stack Hub.

Próximas etapas

Instalar a CLI do Azure no Azure Stack Hub