Ajouter un certificat d’application à un cluster Service Fabric

Cet exemple de script explique comment créer un certificat dans Key Vault, puis comment le déployer sur l’un des groupes de machines virtuelles identiques où s’exécute votre cluster. Ce scénario n’utilise pas directement Service Fabric, il dépend plutôt de Key Vault et des groupes de machines virtuelles identiques.

Notes

Nous vous recommandons d’utiliser le module Azure Az PowerShell pour interagir avec Azure. Pour commencer, consultez Installer Azure PowerShell. Pour savoir comment migrer vers le module Az PowerShell, consultez Migrer Azure PowerShell depuis AzureRM vers Az.

Si nécessaire, installez Azure PowerShell à l’aide des instructions figurant dans le Guide Azure PowerShell, puis exécutez Connect-AzAccount pour créer une connexion avec Azure.

Créer un certificat dans Key Vault

$VaultName = ""
$CertName = ""
$SubjectName = "CN="

$policy = New-AzKeyVaultCertificatePolicy -SubjectName $SubjectName -IssuerName Self -ValidityInMonths 12
Add-AzKeyVaultCertificate -VaultName $VaultName -Name $CertName -CertificatePolicy $policy

Ou charger un certificat existant dans Key Vault

$VaultName= ""
$CertName= ""
$CertPassword= ""
$PathToPFX= ""

$bytes = [System.IO.File]::ReadAllBytes($PathToPFX)
$base64 = [System.Convert]::ToBase64String($bytes)
$jsonBlob = @{
   data = $base64
   dataType = 'pfx'
   password = $CertPassword
   } | ConvertTo-Json
$contentbytes = [System.Text.Encoding]::UTF8.GetBytes($jsonBlob)
$content = [System.Convert]::ToBase64String($contentbytes)

$SecretValue = ConvertTo-SecureString -String $content -AsPlainText -Force

# Upload the certificate to the key vault as a secret
$Secret = Set-AzKeyVaultSecret -VaultName $VaultName -Name $CertName -SecretValue $SecretValue

Mettre à jour le profil des groupes de machines virtuelles identiques avec un certificat

$ResourceGroupName = ""
$VMSSName = ""
$CertStore = "My" # Update this with the store you want your certificate placed in, this is LocalMachine\My

# If you have added your certificate to the keyvault certificates, use
$CertConfig = New-AzVmssVaultCertificateConfig -CertificateUrl (Get-AzKeyVaultCertificate -VaultName $VaultName -Name $CertName).SecretId -CertificateStore $CertStore

# Otherwise, if you have added your certificate to the keyvault secrets, use
$CertConfig = New-AzVmssVaultCertificateConfig -CertificateUrl (Get-AzKeyVaultSecret -VaultName $VaultName -Name $CertName).Id -CertificateStore $CertStore

$VMSS = Get-AzVmss -ResourceGroupName $ResourceGroupName -VMScaleSetName $VMSSName

# If this KeyVault is already known by the virtual machine scale set, for example if the cluster certificate is deployed from this keyvault, use
$VMSS.virtualmachineprofile.osProfile.secrets[0].vaultCertificates.Add($CertConfig)

# Otherwise use
$VMSS = Add-AzVmssSecret -VirtualMachineScaleSet $VMSS -SourceVaultId (Get-AzKeyVault -VaultName $VaultName).ResourceId  -VaultCertificate $CertConfig

Mettre à jour le groupe de machines virtuelles identiques

Update-AzVmss -ResourceGroupName $ResourceGroupName -VirtualMachineScaleSet $VMSS -VMScaleSetName $VMSSName

Si vous souhaitez que le certificat soit placé sur plusieurs types de nœud de votre cluster, les deuxième et troisième parties de ce script doivent être répétées pour chaque type de nœud ayant le certificat.

Explication du script

Ce script utilise les commandes suivantes : Chaque commande du tableau renvoie à une documentation spécifique.

Commande Notes
New-AzKeyVaultCertificatePolicy Crée une stratégie en mémoire représentant le certificat
Add-AzKeyVaultCertificate Déploie la stratégie sur Certificats Key Vault
Set-AzKeyVaultSecret Déploie la stratégie sur Secrets Key Vault
New-AzVmssVaultCertificateConfig Crée une configuration en mémoire représentant le certificat dans une machine virtuelle
Get-AzVmss
Add-AzVmssSecret Ajoute le certificat à la définition en mémoire du groupe de machines virtuelles identiques
Update-AzVmss Déploie la nouvelle définition du groupe de machines virtuelles identiques

Étapes suivantes

Pour plus d’informations sur le module Azure PowerShell, consultez Documentation Azure PowerShell.

Vous trouverez des exemples supplémentaires de scripts Azure PowerShell pour Azure Service Fabric dans Exemples Azure PowerShell.