Configurar certificados para a CLI do Azure no Azure Stack Hub ou no Azure Stack Development Kit
Siga as etapas neste artigo para configurar a CLI (Interface de Linha de Comando) do Azure para gerenciar recursos do Azure Stack Development Kit (ASDK) a partir de plataformas de cliente Linux, Mac e Windows. Você também pode seguir estas etapas se estiver usando um sistema integrado Azure Stack Hub em um ambiente desconectado ou se seus certificados não forem emitidos por uma CA no programa de raízes confiáveis.
Este artigo aborda como obter seus certificados e confiar neles em sua máquina 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 para a CLI do Azure
Você precisa do certificado raiz da CA para o Azure Stack Hub para usar a CLI do Azure em sua máquina de desenvolvimento. Você usa o certificado para gerenciar recursos por meio da CLI.
O certificado raiz da CA do Azure Stack Hub é 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 CA do Azure Stack Hub
Exporte o certificado raiz da autoridade de certificação. Para exportar o certificado raiz ASDK no formato PEM:
Obtenha o nome do seu Certificado Raiz do Hub do Azure Stack:
- Entre no usuário do Azure Stack Hub ou no portal do administrador do Azure Stack Hub.
- Selecione o cadeado na barra de endereço do navegador.
- Na janela pop-up, selecione A conexão é segura.
- Na janela Certificado, selecione a guia Caminho de certificação .
- Anote o nome do seu Azure Stack Hub Root Cert, por exemplo,
*.<locale>.<FQDN>
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
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
Copie o certificado para a 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 quando implanta uma VM como um parâmetro da CLI do Azure.
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.Baixe o arquivo de exemplo do GitHub.
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".
Carregue o arquivo JSON para o novo contêiner. Quando isso for feito, você poderá visualizar a URL do blob. Selecione o nome do blob e, em seguida, selecione o URL nas propriedades do blob.
Confiar no certificado
Para usar a CLI do Azure com o ASDK, você deve confiar no certificado raiz da CA em sua máquina remota.
Encontre o local do certificado na sua máquina. O local pode variar dependendo de onde você instalou o Python.
Para localizar o local, abra um prompt CMD ou um prompt do PowerShell elevado 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
Mude para o diretório onde a CLI do Azure instalou o Python. Por exemplo, usando o local na etapa 2,
cd "C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\
.Escreva 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.
Confie no certificado raiz da CA do Azure Stack Hub anexando-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 conectar-se com a CLI do Azure, consulte Instalar a CLI do Azure no Azure Stack Hub.