Tanúsítványok beállítása az Azure CLI-hez az Azure Stack Hubon vagy az Azure Stack Development Kitben

A cikkben szereplő lépéseket követve állítsa be az Azure Command-Line Interface (CLI) szolgáltatást az Azure Stack Development Kit (ASDK) erőforrásainak Linux, Mac és Windows ügyfélplatformról történő kezeléséhez. Ezeket a lépéseket akkor is követheti, ha az Azure Stack Hub integrált rendszert használ leválasztott környezetben, vagy ha a tanúsítványokat nem egy hitelesítésszolgáltató bocsátotta ki a megbízható gyökérprogramban.

Ez a cikk a tanúsítványok lekéréséről és a távfelügyeleti gépen való megbízhatóságukról szól. Az Azure CLI telepítéséhez és a környezethez való csatlakozáshoz lásd: Az Azure CLI telepítése az Azure Stack Hubon.

Felkészülés az Azure CLI-re

Az Azure Stack Hub hitelesítésszolgáltatói főtanúsítványára van szükség az Azure CLI fejlesztői gépen való használatához. A tanúsítvány használatával kezelheti az erőforrásokat a parancssori felületen keresztül.

  • Az Azure Stack Hub hitelesítésszolgáltató főtanúsítványára akkor van szükség, ha a parancssori felületet az Azure Stack Hub-környezeten kívüli munkaállomásról használja.

  • A virtuálisgép-aliasok végpontja egy aliast biztosít, például "UbuntuLTS" vagy "Win2012Datacenter". Ez az alias egyetlen paraméterként hivatkozik egy lemezkép-közzétevőre, ajánlatra, termékváltozatra és verzióra a virtuális gépek üzembe helyezésekor.

Az alábbi szakaszok ismertetik, hogyan szerezheti be ezeket az értékeket.

Az Azure Stack Hub hitelesítésszolgáltató főtanúsítványának exportálása

Exportálja a hitelesítésszolgáltató főtanúsítványát. Az ASDK főtanúsítványának exportálása PEM formátumban:

  1. Kérje le az Azure Stack Hub gyökértanúsítványának nevét:

    1. Jelentkezzen be az Azure Stack Hub felhasználói vagy az Azure Stack Hub felügyeleti portáljára.
    2. Válassza ki a zárolást a böngésző címsorában.
    3. Az előugró ablakban válassza a Kapcsolat biztonságos lehetőséget.
    4. A Tanúsítvány ablakban válassza a Tanúsítvány elérési útja lapot.
    5. Jegyezze fel az Azure Stack Hub gyökértanúsítványának nevét, például: *.<locale>.<FQDN>

    Azure Stack Hub főtanúsítvány

  2. Hozzon létre egy Windows rendszerű virtuális gépet az Azure Stack Hubon.

  3. Jelentkezzen be a virtuális gépre, nyisson meg egy emelt szintű PowerShell-parancssort, majd futtassa a következő szkriptet:

      $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. Linux esetén a következő parancsra is szükség van:

    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. Másolja a tanúsítványt a helyi gépre.

A virtuális gép aliasvégpontjának beállítása

Beállíthat egy nyilvánosan elérhető végpontot, amely egy virtuálisgép-aliasfájlt üzemeltet. A virtuálisgép-aliasfájl egy JSON-fájl, amely egy kép köznapi nevét adja meg. A nevet akkor használja, ha virtuális gépet helyez üzembe Azure CLI-paraméterként.

  1. Ha egyéni rendszerképet tesz közzé, jegyezze fel a közzététel során megadott közzétevői, ajánlati, termékváltozati és verzióinformációkat. Ha a piactérről származó rendszerképről van szó, az információkat a Get-AzureVMImage parancsmaggal tekintheti meg.

  2. Töltse le a mintafájlt a GitHubról.

  3. Hozzon létre egy tárfiókot az Azure Stack Hubban. Ha ez megtörtént, hozzon létre egy blobtárolót. Állítsa a hozzáférési szabályzatot "nyilvános" értékre.

  4. Töltse fel a JSON-fájlt az új tárolóba. Ha ez megtörtént, megtekintheti a blob URL-címét. Válassza ki a blob nevét, majd válassza ki az URL-címet a blob tulajdonságai közül.

A tanúsítvány megbízhatósága

Az Azure CLI ASDK-val való használatához megbízhatónak kell lennie a hitelesítésszolgáltató főtanúsítványában a távoli gépen.

  1. Keresse meg a tanúsítvány helyét a számítógépen. A hely a Python telepítésének helyétől függően változhat.

  2. A hely megkereséséhez nyisson meg egy CMD-parancssort vagy egy emelt szintű PowerShell-parancssort, és írja be a következőt: az --version. A verzió és a Python helye megjelenik a parancssorban.

    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. Váltson arra a könyvtárra, ahol az Azure CLI telepítette a Pythont. Például használja a helyet a 2. lépésben. cd "C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\

  4. Írja be a következő parancsot:

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

    Ez visszaadja a tanúsítvány helyének elérési útját a számítógépen. Az adott elérési út az operációs rendszertől és a Telepített Python-verziótól függ. Például:

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

    Jegyezze fel a tanúsítvány helyét. A következő lépésben az elérési utat fogja használni.

  5. Bízzon meg az Azure Stack Hub hitelesítésszolgáltató főtanúsítványában úgy, hogy hozzáfűzi azt a meglévő Python-tanúsítványhoz.

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

Az Azure CLI telepítésével és csatlakoztatásával kapcsolatos utasításokért lásd: Az Azure CLI telepítése az Azure Stack Hubon.

Következő lépések

Az Azure CLI telepítése az Azure Stack Hubban