Konfigurowanie certyfikatów dla interfejsu wiersza polecenia platformy Azure w usłudze Azure Stack Hub lub zestawie Azure Stack Development Kit

Wykonaj kroki opisane w tym artykule, aby skonfigurować zasoby zestawu Azure Command-Line Interface (CLI) do zarządzania zasobami zestawu Azure Stack Development Kit (ASDK) z platform klienckich z systemami Linux, Mac i Windows. Możesz również wykonać te kroki, jeśli używasz zintegrowanego systemu Azure Stack Hub w środowisku odłączonym lub jeśli certyfikaty nie są wystawiane przez urząd certyfikacji w zaufanym programie korzeniowym.

W tym artykule opisano uzyskiwanie certyfikatów i ufanie im na komputerze zdalnego zarządzania. Aby zainstalować interfejs wiersza polecenia platformy Azure i nawiązać połączenie ze środowiskiem, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure w usłudze Azure Stack Hub.

Przygotowanie do interfejsu wiersza polecenia platformy Azure

Do korzystania z interfejsu wiersza polecenia platformy Azure na maszynie deweloperowej potrzebny jest certyfikat główny urzędu certyfikacji dla usługi Azure Stack Hub. Certyfikat służy do zarządzania zasobami za pośrednictwem interfejsu wiersza polecenia.

  • Certyfikat główny urzędu certyfikacji usługi Azure Stack Hub jest wymagany, jeśli używasz interfejsu wiersza polecenia z stacji roboczej poza środowiskiem usługi Azure Stack Hub.

  • Punkt końcowy aliasów maszyny wirtualnej udostępnia alias, taki jak "UbuntuLTS" lub "Win2012Datacenter". Ten alias odwołuje się do wydawcy obrazów, oferty, jednostki SKU i wersji jako pojedynczego parametru podczas wdrażania maszyn wirtualnych.

W poniższych sekcjach opisano sposób uzyskiwania tych wartości.

Eksportowanie certyfikatu głównego urzędu certyfikacji usługi Azure Stack Hub

Wyeksportuj certyfikat główny urzędu certyfikacji. Aby wyeksportować certyfikat główny asDK w formacie PEM:

  1. Pobierz nazwę certyfikatu głównego usługi Azure Stack Hub:

    1. Zaloguj się do portalu użytkownika usługi Azure Stack Hub lub administratora usługi Azure Stack Hub.
    2. Wybierz blokadę na pasku adresu przeglądarki.
    3. W oknie podręcznym wybierz pozycję Połączenie jest bezpieczne.
    4. W oknie Certyfikat wybierz kartę Ścieżka certyfikacji .
    5. Zanotuj nazwę certyfikatu głównego usługi Azure Stack Hub, na przykład *.<locale>.<FQDN>

    Certyfikat główny usługi Azure Stack Hub

  2. Tworzenie maszyny wirtualnej z systemem Windows w usłudze Azure Stack Hub.

  3. Zaloguj się do maszyny wirtualnej, otwórz wiersz programu PowerShell z podwyższonym poziomem uprawnień, a następnie uruchom następujący skrypt:

      $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. W przypadku systemu Linux wymagane jest również następujące polecenie:

    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. Skopiuj certyfikat na komputer lokalny.

Konfigurowanie punktu końcowego aliasu maszyny wirtualnej

Możesz skonfigurować publicznie dostępny punkt końcowy hostujący plik aliasu maszyny wirtualnej. Plik aliasu maszyny wirtualnej to plik JSON, który udostępnia nazwę pospolitą obrazu. Nazwa jest używana podczas wdrażania maszyny wirtualnej jako parametru interfejsu wiersza polecenia platformy Azure.

  1. Jeśli publikujesz obraz niestandardowy, zanotuj wydawcę, ofertę, jednostkę SKU i informacje o wersji określone podczas publikowania. Jeśli jest to obraz z witryny Marketplace, możesz wyświetlić informacje przy użyciu Get-AzureVMImage polecenia cmdlet .

  2. Pobierz przykładowy plik z usługi GitHub.

  3. Utwórz konto magazynu w usłudze Azure Stack Hub. Po zakończeniu utwórz kontener obiektów blob. Ustaw zasady dostępu na "publiczne".

  4. Przekaż plik JSON do nowego kontenera. Po zakończeniu możesz wyświetlić adres URL obiektu blob. Wybierz nazwę obiektu blob, a następnie wybierz adres URL z właściwości obiektu blob.

Ufaj certyfikatowi

Aby używać interfejsu wiersza polecenia platformy Azure z zestawem ASDK, musisz ufać certyfikatowi głównemu urzędu certyfikacji na maszynie zdalnej.

  1. Znajdź lokalizację certyfikatu na maszynie. Lokalizacja może się różnić w zależności od tego, gdzie zainstalowano język Python.

  2. Aby znaleźć lokalizację, otwórz wiersz polecenia cmD lub wiersz polecenia programu PowerShell z podwyższonym poziomem uprawnień i wpisz: az --version. Wersja i lokalizacja języka Python są wyświetlane w wierszu polecenia.

    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. Przejdź do katalogu, w którym zainstalowano język Python za pomocą interfejsu wiersza polecenia platformy Azure. Na przykład przy użyciu lokalizacji w kroku 2. cd "C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\

  4. Wpisz następujące polecenie:

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

    Spowoduje to zwrócenie ścieżki lokalizacji certyfikatu na komputerze. Określona ścieżka zależy od systemu operacyjnego i zainstalowanej wersji języka Python. Na przykład:

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

    Zanotuj lokalizację certyfikatu. Użyjesz ścieżki w następnym kroku.

  5. Ufaj certyfikatowi głównemu urzędu certyfikacji usługi Azure Stack Hub, dołączając go do istniejącego certyfikatu języka Python.

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

Aby uzyskać instrukcje dotyczące instalowania i nawiązywania połączenia z interfejsem wiersza polecenia platformy Azure, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure w usłudze Azure Stack Hub.

Następne kroki

Instalowanie interfejsu wiersza polecenia platformy Azure w usłudze Azure Stack Hub