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í Azure Command-Line Interface (CLI) pro správu prostředků sady Azure Stack Development Kit (ASDK) z klientských platforem Linux, Mac a Windows. Tento postup 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 vaše certifikáty nevystavuje certifikační autorita v důvěryhodném kořenovém programu.

Tento článek popisuje získání certifikátů a jejich důvěryhodnost na počítači pro vzdálenou správu. Informace o instalaci Azure CLI a připojení k prostředí najdete v tématu Instalace Azure CLI ve službě Azure Stack Hub.

Příprava na Azure CLI

Abyste mohli azure Stack Hub používat Azure CLI na vývojovém počítači, potřebujete kořenový certifikát certifikační autority. Certifikát se používá 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ích počítačů poskytuje alias, například UbuntuLTS nebo Win2012Datacenter. Tento alias odkazuje na vydavatele image, nabídku, skladovou položku a verzi jako jeden 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:

  1. Získejte název kořenového certifikátu služby Azure Stack Hub:

    1. Přihlaste se k portálu pro správu Služby Azure Stack Hub nebo uživateli služby Azure Stack Hub.
    2. Vyberte zámek na panelu Adresa prohlížeče.
    3. V automaticky otevírané okně vyberte Připojení je zabezpečené.
    4. V okně Certifikát vyberte kartu Cesta k certifikátu .
    5. Poznamenejte si název kořenového certifikátu služby Azure Stack Hub, například *.<locale>.<FQDN>

    Kořenový certifikát služby Azure Stack Hub

  2. Vytvořte virtuální počítač s Windows ve službě Azure Stack Hub.

  3. Přihlaste se k virtuálnímu počítači, otevřete výzvu 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
    
  4. Pro Linux se také vyžaduje 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
    
  5. 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 obrázku. Název použijete při nasazování virtuálního počítače jako parametru Azure CLI.

  1. Pokud publikujete vlastní image, poznamenejte si vydavatele, nabídku, skladovou položku a informace o verzi, které jste zadali během publikování. Pokud se jedná o image z marketplace, můžete tyto informace zobrazit pomocí rutiny Get-AzureVMImage .

  2. Stáhněte si ukázkový soubor z GitHubu.

  3. Vytvořte účet úložiště ve službě Azure Stack Hub. Po dokončení vytvořte kontejner objektů blob. Nastavte zásady přístupu na veřejné.

  4. Nahrajte soubor JSON do nového kontejneru. Po dokončení 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 s ASDK používat Azure CLI, musíte důvěřovat kořenovému certifikátu certifikační autority na vzdáleném počítači.

  1. Vyhledejte umístění certifikátu na vašem počítači. Umístění se může lišit v závislosti na tom, kam jste Python nainstalovali.

  2. Pokud chcete najít umístění, otevřete příkazový řádek příkazového řádku nebo výzvu PowerShellu se zvýšenými oprávněními a zadejte: az --version. Ve výzvě se zobrazí verze a umístění 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
    
  3. Přejděte do adresáře, do kterého Azure CLI nainstalovalo Python. Například pomocí umístění v kroku 2, cd "C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\.

  4. 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. Vaše 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.

  5. Kořenovému certifikátu certifikační autority služby Azure Stack Hub důvěřujte tím, že ho připojíte ke stávají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řipojení pomocí Azure CLI najdete v tématu Instalace Azure CLI ve službě Azure Stack Hub.

Další kroky

Instalace Azure CLI ve službě Azure Stack Hub