Compartilhar via


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 Linha de Comando) do Azure para gerenciar recursos do ASDK (Azure Stack Development Kit) de plataformas de cliente Linux, Mac e Windows. Você também pode seguir estas etapas se estiver usando um sistema integrado do Azure Stack Hub em um ambiente desconectado ou se seus certificados não forem emitidos por uma autoridade de certificação 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, consulte 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 para 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 autoridade de certificação do Azure Stack Hub

Exporte o certificado raiz da autoridade de certificação. 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 cadeado na barra de endereço do navegador.
    3. Na janela pop-up, selecione A 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 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 sua máquina local.

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

Você pode configurar um ponto de extremidade acessível publicamente 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 do editor, da oferta, do SKU e da 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 encontrar o local, abra um prompt CMD ou um prompt do PowerShell com privilégios elevados e digite: az --version. A versão e o local do python aparecem 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 sua máquina. Seu caminho específico depende do seu 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 autoridade de certificação 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 à CLI do Azure, consulte Instalar a CLI do Azure no Azure Stack Hub.

Próximas etapas

Instalar a CLI do Azure no Azure Stack Hub