Partilhar via


Rolar manualmente um certificado de cluster do Service Fabric

Quando um certificado de cluster do Service Fabric estiver perto de expirar, você precisará atualizá-lo. A substituição de certificados é simples se o cluster foi configurado para usar certificados com base no nome comum (em vez da impressão digital). Obtenha um novo certificado de uma autoridade de certificação com uma nova data de validade. Os certificados autoassinados não são suporte para clusters do Service Fabric de produção, para incluir certificados gerados durante o fluxo de trabalho de criação do Cluster do portal do Azure. O novo certificado deve ter o mesmo nome comum que o certificado antigo.

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.

O cluster do Service Fabric usará automaticamente o certificado declarado com mais uma data de expiração futura; quando mais de um certificado de validação estiver instalado no host. Uma prática recomendada é usar um modelo do Gerenciador de Recursos para provisionar Recursos do Azure. Para o ambiente de não-produção, o script a seguir pode ser usado para carregar um novo certificado em um cofre de chaves e, em seguida, instala o certificado no conjunto de escala da máquina virtual:

Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope CurrentUser -Force

$SubscriptionId  =  <subscription ID>

# Sign in to your Azure account and select your subscription
Login-AzAccount -SubscriptionId $SubscriptionId

$region = "southcentralus"
$KeyVaultResourceGroupName  = "keyvaultgroup"
$VaultName = "cntestvault2"
$certFilename = "C:\users\sfuser\sftutorialcluster20180419110824.pfx"
$certname = "cntestcert"
$Password  = "!P@ssw0rd321"
$VmssResourceGroupName     = "sfclustertutorialgroup"
$VmssName                  = "prnninnxj"

# Create new Resource Group 
New-AzResourceGroup -Name $KeyVaultResourceGroupName -Location $region

# Get the key vault.  The key vault must be enabled for deployment.
$keyVault = Get-AzKeyVault -VaultName $VaultName -ResourceGroupName $KeyVaultResourceGroupName 
$resourceId = $keyVault.ResourceId  

# Add the certificate to the key vault.
$PasswordSec = ConvertTo-SecureString -String $Password -AsPlainText -Force
$KVSecret = Import-AzKeyVaultCertificate -VaultName $vaultName -Name $certName  -FilePath $certFilename -Password $PasswordSec

$CertificateThumbprint = $KVSecret.Thumbprint
$CertificateURL = $KVSecret.SecretId
$SourceVault = $resourceId
$CommName    = $KVSecret.Certificate.SubjectName.Name

Write-Host "CertificateThumbprint    :"  $CertificateThumbprint
Write-Host "CertificateURL           :"  $CertificateURL
Write-Host "SourceVault              :"  $SourceVault
Write-Host "Common Name              :"  $CommName    

Set-StrictMode -Version 3
$ErrorActionPreference = "Stop"

$certConfig = New-AzVmssVaultCertificateConfig -CertificateUrl $CertificateURL -CertificateStore "My"

# Get current VM scale set 
$vmss = Get-AzVmss -ResourceGroupName $VmssResourceGroupName -VMScaleSetName $VmssName

# Add new secret to the VM scale set.
$vmss.VirtualMachineProfile.OsProfile.Secrets[0].VaultCertificates.Add($certConfig)

# Update the VM scale set 
Update-AzVmss -ResourceGroupName $VmssResourceGroupName -Name $VmssName -VirtualMachineScaleSet $vmss  -Verbose

Nota

Computa Segredos do Conjunto de Escala de Máquina Virtual não suporta a mesma id de recurso para dois segredos separados, pois cada segredo é um recurso exclusivo com versão.

Passos Seguintes