Nastavení certifikátů pro Azure CLI ve službě Azure Stack Hub nebo azure Stack Development Kit
Postupujte podle kroků v tomto článku a nastavte rozhraní příkazového řádku Azure (CLI) pro správu prostředků sady Azure Stack Development Kit (ASDK) z klientských platforem Linux, Mac a Windows. Tyto kroky můžete provést také v případě, že používáte integrovaný systém Azure Stack Hub v odpojeném prostředí nebo pokud certifikáty nevystavuje certifikační autorita v programu důvěryhodných kořenových certifikátů.
Tento článek se zabývá získáním certifikátů a jejich důvěryhodností na vašem počítači pro vzdálenou správu. Pokud chcete nainstalovat Azure CLI a připojit se k prostředí, přečtěte si téma Instalace Azure CLI ve službě Azure Stack Hub.
Příprava na Azure CLI
K používání Azure CLI na vývojovém počítači potřebujete kořenový certifikát certifikační autority pro Azure Stack Hub. Certifikát použijete ke správě prostředků prostřednictvím rozhraní příkazového řádku.
Kořenový certifikát certifikační autority služby Azure Stack Hub se vyžaduje, pokud používáte rozhraní příkazového řádku z pracovní stanice mimo prostředí služby Azure Stack Hub.
Koncový bod aliasů virtuálního počítače poskytuje alias, například UbuntuLTS nebo Win2012Datacenter. Tento alias odkazuje na vydavatele image, nabídku, skladovou položku a verzi jako jediný parametr při nasazování virtuálních počítačů.
Následující části popisují, jak tyto hodnoty získat.
Export kořenového certifikátu certifikační autority služby Azure Stack Hub
Exportujte kořenový certifikát certifikační autority. Export kořenového certifikátu ASDK ve formátu PEM:
Získejte název kořenového certifikátu služby Azure Stack Hub:
- Přihlaste se k uživateli služby Azure Stack Hub nebo portálu pro správu služby Azure Stack Hub.
- Vyberte zámek v adresní řádku prohlížeče.
- V automaticky otevíraných otevíraných oknech vyberte Připojení.
- V okně Certifikát vyberte kartu Cesta k certifikaci.
- Poznamenejte si název kořenového certifikátu služby Azure Stack Hub, například
*.<locale>.<FQDN>
Vytvořte virtuální počítač s Windows ve službě Azure Stack Hub.
Přihlaste se k virtuálnímu počítači, otevřete příkazový řádek PowerShellu se zvýšenými oprávněními a spusťte následující skript:
$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
Pro Linux se vyžaduje také následující příkaz:
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
Zkopírujte certifikát do místního počítače.
Nastavení koncového bodu aliasu virtuálního počítače
Můžete nastavit veřejně přístupný koncový bod, který je hostitelem souboru aliasu virtuálního počítače. Soubor aliasu virtuálního počítače je soubor JSON, který poskytuje běžný název image. Název použijete při nasazení virtuálního počítače jako parametr Azure CLI.
Pokud publikujete vlastní image, poznamenejte si vydavatele, nabídku, skladovou položku a informace o verzi, které jste zadali při publikování. Pokud se jedná o obrázek z marketplace, můžete informace zobrazit pomocí rutiny
Get-AzureVMImage
.Stáhněte si ukázkový soubor z GitHubu.
Vytvořte účet úložiště ve službě Azure Stack Hub. Až to bude hotové, vytvořte kontejner objektů blob. Nastavte zásady přístupu na "veřejné".
Nahrajte soubor JSON do nového kontejneru. Až to bude hotové, můžete zobrazit adresu URL objektu blob. Vyberte název objektu blob a pak vyberte adresu URL z vlastností objektu blob.
Důvěřovat certifikátu
Pokud chcete používat Azure CLI s ASDK, musíte na vzdáleném počítači důvěřovat kořenovému certifikátu certifikační autority.
Najděte umístění certifikátu na vašem počítači. Umístění se může lišit v závislosti na tom, kde jste python nainstalovali.
Pokud chcete najít umístění, otevřete příkazový řádek příkazového řádku nebo příkazový řádek PowerShellu se zvýšenými oprávněními a zadejte:
az --version
. V příkazovém řádku se zobrazí umístění verze a pythonu.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
Přejděte do adresáře, ve kterém má Azure CLI nainstalovaný Python. Například použití umístění v kroku 2,
cd "C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\
.Zadejte následující příkaz:
.\python -c "import certifi; print(certifi.where())"
Tím se vrátí cesta k umístění certifikátu na vašem počítači. Konkrétní cesta závisí na operačním systému a verzi Pythonu, kterou jste nainstalovali. Příklad:
C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\lib\site-packages\certifi\cacert.pem
Poznamenejte si umístění certifikátu. Cestu použijete v dalším kroku.
Důvěřovat kořenovému certifikátu certifikační autority služby Azure Stack Hub tak, že ho připojíte k existujícímu certifikátu Pythonu.
$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"
Pokyny k instalaci a připojování pomocí Azure CLI najdete v tématu Instalace Azure CLI ve službě Azure Stack Hub.