Dela via


Rulla över ett Service Fabric-klustercertifikat manuellt

När ett Service Fabric-klustercertifikat är nära att upphöra att gälla måste du uppdatera certifikatet. Det är enkelt att distribuera certifikat om klustret har konfigurerats för att använda certifikat baserat på eget namn (i stället för tumavtryck). Hämta ett nytt certifikat från en certifikatutfärdare med ett nytt förfallodatum. Självsignerade certifikat har inte stöd för service fabric-produktionskluster för att inkludera certifikat som genereras under arbetsflödet för klusterskapande i Azure-portalen. Det nya certifikatet måste ha samma gemensamma namn som det äldre certifikatet.

Kommentar

Vi rekommenderar att du använder Azure Az PowerShell-modulen för att interagera med Azure. Information om hur du kommer igång finns i Installera Azure PowerShell. Information om hur du migrerar till Az PowerShell-modulen finns i artikeln om att migrera Azure PowerShell från AzureRM till Az.

Service Fabric-klustret använder automatiskt det deklarerade certifikatet med ytterligare ett utgångsdatum. när mer än ett verifieringscertifikat har installerats på värden. Bästa praxis är att använda en Resource Manager-mall för att etablera Azure-resurser. För icke-produktionsmiljö kan följande skript användas för att ladda upp ett nytt certifikat till ett nyckelvalv och sedan installera certifikatet på vm-skalningsuppsättningen:

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

Kommentar

Computes Virtual Machine Scale Set Secrets stöder inte samma resurs-ID för två separata hemligheter, eftersom varje hemlighet är en versionsbaserad unik resurs.

Nästa steg