Поделиться через


Обновить сертификат кластера в Service Fabric вручную

Если сертификат кластера Service Fabric близок к истечению срока действия, необходимо обновить сертификат. Свертка сертификатов проста, если кластер был настроен для использования сертификатов на основе общего имени (вместо отпечатка). Получите новый сертификат из центра сертификации с новой датой окончания срока действия. Самозаверяющие сертификаты, включая те, которые создаются во время процесса создания кластера в портале Azure, не поддерживаются для рабочих кластеров Service Fabric. Новый сертификат должен иметь то же общее имя, что и старый сертификат.

Примечание.

Мы рекомендуем использовать модуль Azure Az PowerShell для взаимодействия с Azure. Чтобы начать работу, см. статью Установка Azure PowerShell. Чтобы узнать, как осуществить переход на модуль Az PowerShell, см. статью Перенос Azure PowerShell с AzureRM на Az.

Кластер Service Fabric автоматически будет использовать объявленный сертификат с более поздней датой истечения срока действия, если на хосте установлено более одного проверенного сертификата. Рекомендуется использовать шаблон Resource Manager для подготовки ресурсов Azure. Для непроизводственных сред можно использовать следующий скрипт для отправки нового сертификата в хранилище ключей, а затем установить сертификат в масштабируемом наборе виртуальных машин:

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

Примечание.

Секреты масштабируемого набора виртуальных машин не поддерживают один и тот же идентификатор ресурса для двух отдельных секретов, так как каждый секрет является версионированным уникальным ресурсом.

Дальнейшие шаги