Partage via


Configurer des certificats pour Azure CLI sur Azure Stack Hub ou le Kit de développement Azure Stack

Suivez les étapes de cet article pour configurer l’interface de ligne de commande (CLI) Azure pour gérer les ressources du Kit de développement Azure Stack (ASDK) à partir des plateformes clientes Linux, Mac et Windows. Vous pouvez également suivre ces étapes si vous utilisez un système intégré Azure Stack Hub dans un environnement déconnecté ou si vos certificats ne sont pas émis par une autorité de certification dans le programme de racines de confiance.

Cet article traite de l’obtention et de l’approbation de vos certificats sur votre ordinateur de gestion distant. Pour installer Azure CLI et vous connecter à votre environnement, consultez Installer Azure CLI sur Azure Stack Hub.

Préparation pour Azure CLI

Vous devez disposer du certificat d’autorité de certification racine pour Azure Stack Hub afin d’utiliser Azure CLI sur votre ordinateur de développement. Vous utilisez le certificat pour gérer des ressources via l’interface CLI.

  • Le certificat d’autorité de certification racine Azure Stack Hub est obligatoire si vous utilisez l’interface CLI sur une station de travail qui se trouve en dehors de l’environnement Azure Stack Hub.

  • Le point de terminaison des alias de machines virtuelles fournit un alias, comme « UbuntuLTS » ou « Win2012Datacenter ». Cet alias référence un éditeur, une offre, une référence (SKU) et une version d’image sous la forme d’un seul paramètre lors du déploiement de machines virtuelles.

Les sections suivantes expliquent comment obtenir ces valeurs.

Exporter le certificat de l'autorité de certification racine Azure Stack Hub

Exportez le certificat racine de l’autorité de certification. Pour exporter le certificat racine ASDK au format PEM :

  1. Obtenez le nom de votre certificat racine Azure Stack Hub :

    1. Connectez-vous au portail utilisateur Azure Stack Hub ou administrateur Azure Stack Hub.
    2. Sélectionnez le verrou dans la barre d’adresse du navigateur.
    3. Dans la fenêtre contextuelle, sélectionnez La connexion est sécurisée.
    4. Dans la fenêtre Certificat, sélectionnez l’onglet Chemin d’accès de certification.
    5. Notez le nom de votre certificat racine Azure Stack Hub (par exemple, *.<locale>.<FQDN>).

    Certificat racine Azure Stack Hub

  2. Créez une machine virtuelle Windows sur Azure Stack Hub.

  3. Connectez-vous à la machine virtuelle, ouvrez une invite PowerShell avec élévation de privilèges et exécutez le script suivant :

      $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. Pour Linux, la commande suivante est également requise :

    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. Copiez le certificat sur votre machine locale.

Configurer le point de terminaison d’alias de machines virtuelles

Vous pouvez configurer un point de terminaison accessible publiquement qui héberge un fichier d’alias de machines virtuelles. Le fichier d’alias de machines virtuelles est un fichier JSON qui fournit un nom commun pour une image. Vous utiliserez ce nom lorsque vous déploierez une machine virtuelle en tant que paramètre Azure CLI.

  1. Si vous publiez une image personnalisée, prenez note des informations concernant l’éditeur, l’offre, la référence (SKU) et la version que vous avez spécifiées lors de la publication. S'il s'agit d'une image provenant de la Place de marché, vous pouvez afficher les informations en utilisant la cmdlet Get-AzureVMImage.

  2. Téléchargez l’ exemple de fichier à partir de GitHub.

  3. Créez un compte de stockage dans Azure Stack Hub. Puis créez un conteneur d'objets blob. Définissez la stratégie d’accès sur « publique ».

  4. Chargez le fichier JSON dans le nouveau conteneur. Au terme de cette opération, vous pouvez afficher l'URL de l'objet blob. Sélectionnez le nom de l'objet blob, puis l'URL dans ses propriétés.

Approuver le certificat

Pour utiliser Azure CLI avec le kit ASDK, vous devez approuver le certificat racine de l’autorité de certification sur votre ordinateur distant.

  1. Trouvez l’emplacement du certificat sur votre machine. L’emplacement peut varier en fonction de l’endroit où vous avez installé Python.

  2. Pour trouver l’emplacement, ouvrez une invite de commandes ou une invite PowerShell avec élévation de privilèges et tapez : az --version. La version et l’emplacement de Python apparaissent dans l’invite de commandes.

    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. Indiquez le répertoire dans lequel Azure CLI a installé Python. Par exemple, utilisez l’emplacement défini à l’étape 2, cd "C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\.

  4. Tapez la commande suivante :

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

    Le chemin d’accès de l’emplacement du certificat sur votre ordinateur est alors retourné. Votre chemin d’accès particulier dépend de votre système d’exploitation et de la version de Python que vous avez installée. Par exemple :

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

    Notez l’emplacement du certificat. Vous aurez besoin de ce chemin d’accès à l’étape suivante.

  5. Pour approuver le certificat d'autorité de certification racine Azure Stack Hub, ajoutez-le au certificat Python existant.

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

Pour obtenir des instructions sur l’installation et la connexion à Azure CLI, consultez Installer Azure CLI sur Azure Stack Hub.

Étapes suivantes

Installer Azure CLI sur Azure Stack Hub