Configurar certificados para a CLI do Azure no Azure Stack Hub ou no Azure Stack Development Kit
Siga os passos neste artigo para configurar a Interface de Command-Line do Azure (CLI) para gerir recursos do Azure Stack Development Kit (ASDK) a partir de plataformas cliente Linux, Mac e Windows. Também pode seguir estes passos se estiver a utilizar um sistema integrado do Azure Stack Hub num ambiente desligado ou se os certificados não forem emitidos por uma AC no programa de raízes fidedignas.
Este artigo aborda a obtenção dos certificados e a confiança dos mesmos no seu computador de gestão remota. Para instalar a CLI do Azure e ligar ao seu ambiente, veja Instalar a CLI do Azure no Azure Stack Hub.
Preparar para a CLI do Azure
Precisa do certificado de raiz da AC para o Azure Stack Hub utilizar a CLI do Azure no seu computador de desenvolvimento. Utilize o certificado para gerir recursos através da CLI.
O certificado de raiz da AC do Azure Stack Hub é necessário se estiver a utilizar a CLI de uma estação de trabalho fora do ambiente do Azure Stack Hub.
O ponto final de aliases da máquina virtual fornece um alias, como "UbuntuLTS" ou "Win2012Datacenter". Este alias faz referência a um publicador de imagens, oferta, SKU e versão como um único parâmetro ao implementar VMs.
As secções seguintes descrevem como obter estes valores.
Exportar o certificado de raiz da AC do Azure Stack Hub
Exporte o certificado de raiz da AC. Para exportar o certificado de raiz do ASDK no formato PEM:
Obtenha o nome do certificado de raiz do Azure Stack Hub:
- Inicie sessão no Portal do Utilizador do Azure Stack Hub ou administrador do Azure Stack Hub.
- Selecione o bloqueio na barra de endereço do browser.
- Na janela de pop-up, selecione A ligação é segura.
- Na janela Certificado, selecione o separador Caminho da Certificação .
- Anote o nome do certificado de raiz do Azure Stack Hub, por exemplo,
*.<locale>.<FQDN>
Inicie sessão na VM, abra uma linha de comandos elevada do PowerShell e, em seguida, 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, também é necessário o seguinte comando:
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 o seu computador local.
Configurar o ponto final do alias da máquina virtual
Pode configurar um ponto final acessível publicamente que aloja um ficheiro de alias de VM. O ficheiro de alias da VM é um ficheiro JSON que fornece um nome comum para uma imagem. Utilize o nome quando implementa uma VM como um parâmetro da CLI do Azure.
Se publicar uma imagem personalizada, tome nota do publicador, oferta, SKU e informações de versão que especificou durante a publicação. Se for uma imagem do marketplace, pode ver as informações com o
Get-AzureVMImage
cmdlet .Transfira o ficheiro de exemplo a partir do GitHub.
Crie uma conta de armazenamento no Azure Stack Hub. Quando terminar, crie um contentor de blobs. Defina a política de acesso como "pública".
Carregue o ficheiro JSON para o novo contentor. Quando terminar, pode ver o URL do blob. Selecione o nome do blob e, em seguida, selecione o URL nas propriedades do blob.
Confiar no certificado
Para utilizar a CLI do Azure com o ASDK, tem de confiar no certificado de raiz da AC no seu computador remoto.
Localize a localização do certificado no seu computador. A localização pode variar consoante o local onde instalou o Python.
Para localizar a localização, abra uma linha de comandos CMD ou uma linha de comandos elevada do PowerShell e escreva:
az --version
. A versão e a localização do Python são apresentadas na linha de comandos.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, com a localização no passo 2,
cd "C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\
.Escreva o seguinte comando:
.\python -c "import certifi; print(certifi.where())"
Isto irá devolver o caminho da localização do certificado no seu computador. O seu caminho específico depende do seu SO e da versão do Python que instalou. Por exemplo:
C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\lib\site-packages\certifi\cacert.pem
Anote a localização do certificado. Irá utilizar o caminho no próximo passo.
Confie no certificado de raiz da AC do Azure Stack Hub ao anexá-lo 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 ligar à CLI do Azure, veja Instalar a CLI do Azure no Azure Stack Hub.