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:
Obtenha o nome do certificado raiz do Azure Stack Hub:
- Entre no portal Usuário do Azure Stack Hub ou 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 certificado raiz do Azure Stack Hub, 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 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.
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.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 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.
Encontre a localização do certificado no computador. O local pode variar dependendo de onde você instalou o Python.
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
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\
.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.
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.