Incorporación de un certificado de aplicación a un clúster de Service Fabric

Este script de ejemplo le muestra cómo crear un certificado en Key Vault y, a continuación, cómo implementarlo en uno de los conjuntos de escalado de máquinas virtuales en los que se ejecuta el clúster. En este escenario no se usa Service Fabric directamente, sino que depende de Key Vault y de los conjuntos de escalado de máquinas virtuales.

Nota:

Se recomienda usar el módulo Azure Az de PowerShell para interactuar con Azure. Consulte Instalación de Azure PowerShell para empezar. Para más información sobre cómo migrar al módulo Az de PowerShell, consulte Migración de Azure PowerShell de AzureRM a Az.

Si es necesario, instale Azure PowerShell con la instrucción que se encuentra en la guía de Azure PowerShell y luego ejecute Connect-AzAccount para crear una conexión con Azure.

Creación de un certificado en Key Vault

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

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

Carga de un certificado existente en 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

Actualización del perfil de los conjuntos de escalado de máquinas virtuales con certificado

$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

Actualización del conjunto de escalado de máquinas virtuales

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

Si desea que el certificado esté colocado en varios tipos de nodo del clúster, la segunda y tercera parte de este script se debería repetir con cada tipo de nodo que deba incluir el certificado.

Explicación del script

Este script usa los siguientes comandos: Cada comando de la tabla crea un vínculo a documentación específica del comando.

Get-Help Notas
New-AzKeyVaultCertificatePolicy Crea una directiva en memoria que representa el certificado
Add-AzKeyVaultCertificate Implementa la directiva en certificados de Key Vault.
Set-AzKeyVaultSecret Implementa la directiva en secretos de Key Vault.
New-AzVmssVaultCertificateConfig Crea una configuración en memoria que representa el certificado de una máquina virtual
Get-AzVmss
Add-AzVmssSecret Agrega el certificado a la definición en memoria del conjunto de escalado de máquinas virtuales
Update-AzVmss Implementa la nueva definición del conjunto de escalado de máquinas virtuales

Pasos siguientes

Para obtener más información sobre el módulo de Azure PowerShell, consulte la documentación de Azure PowerShell.

Puede ver otros ejemplos de Azure PowerShell para Azure Service Fabric en los ejemplos de Azure PowerShell.