Udostępnij za pośrednictwem


Ręczne przerzucanie certyfikatu klastra usługi Service Fabric

Gdy certyfikat klastra usługi Service Fabric jest bliski wygaśnięcia, należy zaktualizować certyfikat. Przerzucanie certyfikatów jest proste, jeśli klaster został skonfigurowany do używania certyfikatów na podstawie nazwy pospolitej (zamiast odcisku palca). Pobierz nowy certyfikat z urzędu certyfikacji z nową datą wygaśnięcia. Certyfikaty z podpisem własnym nie są obsługiwane w przypadku produkcyjnych klastrów usługi Service Fabric w celu uwzględnienia certyfikatów generowanych podczas przepływu pracy tworzenia klastra w witrynie Azure Portal. Nowy certyfikat musi mieć taką samą nazwę pospolitą jak starszy certyfikat.

Uwaga

Do interakcji z platformą Azure zalecamy używanie modułu Azure Az w programie PowerShell. Aby rozpocząć, zobacz Instalowanie programu Azure PowerShell. Aby dowiedzieć się, jak przeprowadzić migrację do modułu Az PowerShell, zobacz Migracja programu Azure PowerShell z modułu AzureRM do modułu Az.

Klaster usługi Service Fabric automatycznie użyje zadeklarowanego certyfikatu z dalszą datą wygaśnięcia w przyszłości; jeśli na hoście jest zainstalowany więcej niż jeden certyfikat weryfikacji. Najlepszym rozwiązaniem jest użycie szablonu usługi Resource Manager do aprowizowania zasobów platformy Azure. W przypadku środowiska nieprodukcyjnego następujący skrypt może służyć do przekazywania nowego certyfikatu do magazynu kluczy, a następnie instalowania certyfikatu w zestawie skalowania maszyn wirtualnych:

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

Uwaga

Oblicza wpisy tajne zestawu skalowania maszyn wirtualnych nie obsługują tego samego identyfikatora zasobu dla dwóch oddzielnych wpisów tajnych, ponieważ każdy wpis tajny jest unikatowym zasobem w wersji.

Następne kroki