Partilhar via


Adicionar um certificado de aplicação a um cluster do Service Fabric

Este script de exemplo explica como criar um certificado no Cofre da Chave e, em seguida, implantá-lo em um dos conjuntos de escala de máquina virtual em que o cluster é executado. Esse cenário não usa o Service Fabric diretamente, mas depende do Cofre da Chave e dos conjuntos de dimensionamento da máquina virtual.

Nota

Recomendamos que utilize o módulo Azure Az do PowerShell para interagir com o Azure. Para começar, consulte Instalar o Azure PowerShell. Para saber como migrar para o módulo do Az PowerShell, veja Migrar o Azure PowerShell do AzureRM para o Az.

Se for preciso, instale o Azure PowerShell com a instrução que se encontra no Guia do Azure PowerShell e, em seguida, execute Connect-AzAccount para criar uma ligação ao Azure.

Criar um certificado no Cofre da Chave

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

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

Ou carregue um certificado existente no Cofre da Chave

$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

Atualizar o perfil dos conjuntos de dimensionamento da máquina virtual com o 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

Atualizar o conjunto de dimensionamento da máquina virtual

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

Se você quiser que o certificado seja colocado em vários tipos de nó em seu cluster, a segunda e terceira partes desse script devem ser repetidas para cada tipo de nó que deve ter o certificado.

Explicação do script

Este script utiliza os seguintes comandos: cada comando na tabela está ligado a documentação específica do comando.

Comando Notas
New-AzKeyVaultCertificatePolicy Cria uma política na memória que representa o certificado
Add-AzKeyVaultCertificate Implanta a política em certificados do Key Vault
Set-AzKeyVaultSecret Implanta a política nos segredos do Key Vault
New-AzVmssVaultCertificateConfig Cria uma configuração na memória que representa o certificado em uma VM
Get-AzVmss
Add-AzVmssSecret Adiciona o certificado à definição na memória do conjunto de escala da máquina virtual
Update-AzVmss Implanta a nova definição do conjunto de escala da máquina virtual

Próximos passos

Para obter mais informações sobre o módulo do Azure PowerShell, veja Documentação do Azure PowerShell.

Exemplos adicionais do Azure PowerShell para o Azure Service Fabric podem ser encontrados nos exemplos do Azure PowerShell.