Azure Stack Hub veya Azure Stack Geliştirme Seti üzerinde Azure CLI için sertifikaları ayarlama

Linux, Mac ve Windows istemci platformlarından Azure Stack Geliştirme Seti (ASDK) kaynaklarını yönetmek üzere Azure Command-Line Arabirimini (CLI) ayarlamak için bu makaledeki adımları izleyin. Bağlantısı kesilmiş bir ortamda tümleşik bir Azure Stack Hub sistemi kullanıyorsanız veya sertifikalarınız güvenilen kökler programındaki bir CA tarafından verilmemişse de bu adımları izleyebilirsiniz.

Bu makalede, sertifikalarınızı alma ve uzaktan yönetim makinenizde bu sertifikalara güvenme işlemleri ele alınıyor. Azure CLI'yi yüklemek ve ortamınıza bağlanmak için bkz. Azure Stack Hub'a Azure CLI yükleme.

Azure CLI için hazırlanma

Geliştirme makinenizde Azure CLI kullanmak için Azure Stack Hub için CA kök sertifikasına ihtiyacınız vardır. Cli aracılığıyla kaynakları yönetmek için sertifikayı kullanırsınız.

  • CLI'yi Azure Stack Hub ortamı dışındaki bir iş istasyonundan kullanıyorsanız Azure Stack Hub CA kök sertifikası gereklidir.

  • Sanal makine diğer adları uç noktası , "UbuntuLTS" veya "Win2012Datacenter" gibi bir diğer ad sağlar. Bu diğer ad, VM'leri dağıtırken tek bir parametre olarak görüntü yayımcısı, teklifi, SKU'su ve sürümüne başvurur.

Aşağıdaki bölümlerde bu değerlerin nasıl alındığı açıklanmaktadır.

Azure Stack Hub CA kök sertifikasını dışarı aktarma

CA kök sertifikasını dışarı aktarın. ASDK kök sertifikasını PEM biçiminde dışarı aktarmak için:

  1. Azure Stack Hub Kök Sertifikanızın adını alın:

    1. Azure Stack Hub Kullanıcısı veya Azure Stack Hub Yönetici portalında oturum açın.
    2. Tarayıcı adres çubuğunda kilidi seçin.
    3. Açılır pencerede Bağlantı güvenli'yi seçin.
    4. Sertifika penceresinde Sertifika Yolu sekmesini seçin.
    5. Azure Stack Hub Kök Sertifikanızın adını not alın, örneğin, *.<locale>.<FQDN>

    Azure Stack Hub Kök Sertifikası

  2. Azure Stack Hub'da bir Windows VM oluşturun.

  3. VM'de oturum açın, yükseltilmiş bir PowerShell istemi açın ve aşağıdaki betiği çalıştırın:

      $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 için aşağıdaki komut da gereklidir:

    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. Sertifikayı yerel makinenize kopyalayın.

Sanal makine diğer adı uç noktasını ayarlama

Vm diğer ad dosyasını barındıran genel olarak erişilebilir bir uç nokta ayarlayabilirsiniz. VM diğer adı dosyası, bir görüntü için ortak bir ad sağlayan bir JSON dosyasıdır. Bir VM'yi Azure CLI parametresi olarak dağıtırken bu adı kullanırsınız.

  1. Özel görüntü yayımlarsanız yayımlama sırasında belirttiğiniz yayımcı, teklif, SKU ve sürüm bilgilerini not edin. Bu marketten bir görüntüyse, cmdlet'ini Get-AzureVMImage kullanarak bilgileri görüntüleyebilirsiniz.

  2. GitHub'dan örnek dosyayı indirin.

  3. Azure Stack Hub'da bir depolama hesabı oluşturun. Bu işlem tamamlandığında bir blob kapsayıcısı oluşturun. Erişim ilkesini "public" olarak ayarlayın.

  4. JSON dosyasını yeni kapsayıcıya yükleyin. Bu işlem tamamlandığında blobun URL'sini görüntüleyebilirsiniz. Blob adını ve ardından blob özelliklerinden URL'yi seçin.

Sertifikaya güvenme

Azure CLI'yı ASDK ile kullanmak için uzak makinenizdeki CA kök sertifikasına güvenmeniz gerekir.

  1. Makinenizde sertifika konumunu bulun. Konum, Python'ı yüklediğiniz yere bağlı olarak değişebilir.

  2. Konumu bulmak için bir CMD istemi veya yükseltilmiş bir PowerShell istemi açın ve şunu yazın: az --version. Sürüm ve python konumu isteminde görünür.

    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. Azure CLI'nın Python'ı yüklediği dizine geçin. Örneğin, 2 cd "C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\. adımdaki konumu kullanarak.

  4. Aşağıdaki komutu yazın:

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

    Bu, makinenizdeki sertifika konumunun yolunu döndürür. Özel yolunuz işletim sisteminize ve yüklediğiniz Python sürümüne bağlıdır. Örnek:

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

    Sertifika konumunu not edin. Sonraki adımda yolu kullanacaksınız.

  5. Azure Stack Hub CA kök sertifikasını mevcut Python sertifikasına ekleyerek güvenin.

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

Azure CLI'yı yükleme ve Azure CLI ile bağlanma yönergeleri için bkz. Azure Stack Hub'a Azure CLI yükleme.

Sonraki adımlar

Azure Stack Hub üzerine Azure CLI'yı yükleme