Certificaten instellen voor Azure CLI op Azure Stack Hub of Azure Stack Development Kit

Volg de stappen in dit artikel om de Azure Command-Line Interface (CLI) in te stellen voor het beheren van ASDK-resources (Azure Stack Development Kit) vanuit Linux-, Mac- en Windows-clientplatforms. U kunt deze stappen ook volgen als u een geïntegreerd systeem van Azure Stack Hub gebruikt in een niet-verbonden omgeving of als uw certificaten niet zijn uitgegeven door een CA in het vertrouwde basisprogramma.

Dit artikel gaat over het ophalen van uw certificaten en het vertrouwen ervan op uw computer voor extern beheer. Zie Azure CLI installeren op Azure Stack Hub om de Azure CLI te installeren en verbinding te maken met uw omgeving.

Voorbereiden op Azure CLI

U hebt het CA-basiscertificaat voor Azure Stack Hub nodig om Azure CLI te gebruiken op uw ontwikkelcomputer. U gebruikt het certificaat om resources te beheren via de CLI.

  • Het CA-basiscertificaat van Azure Stack Hub is vereist als u de CLI gebruikt vanaf een werkstation buiten de Azure Stack Hub-omgeving.

  • Het eindpunt voor aliassen van virtuele machines biedt een alias, zoals UbuntuLTS of Win2012Datacenter. Deze alias verwijst naar een uitgever, aanbieding, SKU en versie van een installatiekopieën als één parameter bij het implementeren van VM's.

In de volgende secties wordt beschreven hoe u deze waarden kunt ophalen.

Het CA-basiscertificaat van Azure Stack Hub exporteren

Exporteer het CA-basiscertificaat. Het ASDK-basiscertificaat exporteren in PEM-indeling:

  1. Haal de naam van uw Azure Stack Hub-basiscertificaat op:

    1. Meld u aan bij de Azure Stack Hub-gebruikers- of Azure Stack Hub-beheerdersportal.
    2. Selecteer de vergrendeling in de adresbalk van de browser.
    3. Selecteer verbinding is beveiligd in het pop-upvenster.
    4. Selecteer in het venster Certificaat het tabblad Certificeringspad .
    5. Noteer de naam van uw Azure Stack Hub-basiscertificaat, bijvoorbeeld *.<locale>.<FQDN>

    Azure Stack Hub-basiscertificaat

  2. Een Virtuele Windows-machine maken in Azure Stack Hub.

  3. Meld u aan bij de VM, open een PowerShell-prompt met verhoogde bevoegdheid en voer het volgende script uit:

      $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. Voor Linux is ook de volgende opdracht vereist:

    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. Kopieer het certificaat naar uw lokale computer.

Het eindpunt van de virtuele machinealias instellen

U kunt een openbaar toegankelijk eindpunt instellen dat als host fungeert voor een VM-aliasbestand. Het VM-aliasbestand is een JSON-bestand met een algemene naam voor een installatiekopieën. U gebruikt de naam wanneer u een virtuele machine implementeert als een Azure CLI-parameter.

  1. Als u een aangepaste installatiekopieën publiceert, noteert u de informatie over de uitgever, aanbieding, SKU en versie die u tijdens het publiceren hebt opgegeven. Als het een installatiekopieën uit de marketplace is, kunt u de informatie bekijken met behulp van de Get-AzureVMImage cmdlet.

  2. Download het voorbeeldbestand van GitHub.

  3. Maak een opslagaccount in Azure Stack Hub. Wanneer dat is gebeurd, maakt u een blobcontainer. Stel het toegangsbeleid in op 'openbaar'.

  4. Upload het JSON-bestand naar de nieuwe container. Wanneer dat is gebeurd, kunt u de URL van de blob bekijken. Selecteer de naam van de blob en selecteer vervolgens de URL in de blobeigenschappen.

Het certificaat vertrouwen

Als u Azure CLI wilt gebruiken met de ASDK, moet u het CA-basiscertificaat op uw externe computer vertrouwen.

  1. Zoek de locatie van het certificaat op de computer. De locatie kan variëren, afhankelijk van waar u Python hebt geïnstalleerd.

  2. Als u de locatie wilt vinden, opent u een CMD-prompt of een PowerShell-prompt met verhoogde bevoegdheid en typt u: az --version. De versie en python-locatie worden weergegeven in de 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
    
  3. Ga naar de map waarin Azure CLI Python heeft geïnstalleerd. Bijvoorbeeld met behulp van de locatie in stap 2, cd "C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\.

  4. Typ de volgende opdracht:

    .\python -c "import certifi; print(certifi.where())"
    

    Hiermee wordt het pad van de certificaatlocatie op uw computer geretourneerd. Uw specifieke pad is afhankelijk van uw besturingssysteem en de versie van Python die u hebt geïnstalleerd. Bijvoorbeeld:

    C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\lib\site-packages\certifi\cacert.pem
    

    Noteer de locatie van het certificaat. U gebruikt het pad in de volgende stap.

  5. Vertrouw het Ca-basiscertificaat van Azure Stack Hub door het toe te voegen aan het bestaande Python-certificaat.

    $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"
    

Zie Azure CLI installeren op Azure Stack Hub voor instructies over het installeren van en verbinding maken met Azure CLI.

Volgende stappen

Azure CLI installeren in Azure Stack Hub