Distribuera ett programcertifikat till ett Service Fabric-kluster
Det här exempelskriptet går igenom hur du skapar ett certifikat i Key Vault och sedan distribuerar det till en av de vm-skalningsuppsättningar som klustret körs på. Det här scenariot använder inte Service Fabric direkt, utan beror snarare på Key Vault och vm-skalningsuppsättningar.
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.
Om det behövs installerar du Azure PowerShell med hjälp av anvisningarna i Azure PowerShell-guiden och kör sedan Connect-AzAccount
för att skapa en anslutning med Azure.
Skapa ett certifikat i Key Vault
$VaultName = ""
$CertName = ""
$SubjectName = "CN="
$policy = New-AzKeyVaultCertificatePolicy -SubjectName $SubjectName -IssuerName Self -ValidityInMonths 12
Add-AzKeyVaultCertificate -VaultName $VaultName -Name $CertName -CertificatePolicy $policy
Eller ladda upp ett befintligt certifikat till Key Vault
$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
Uppdatera profilen för vm-skalningsuppsättningar med certifikat
$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
Uppdatera vm-skalningsuppsättningen
Update-AzVmss -ResourceGroupName $ResourceGroupName -VirtualMachineScaleSet $VMSS -VMScaleSetName $VMSSName
Om du vill att certifikatet ska placeras på flera nodtyper i klustret bör den andra och tredje delen av skriptet upprepas för varje nodtyp som ska ha certifikatet.
Förklaring av skript
Det här skriptet använder följande kommandon: varje kommando i tabellen länkar till kommandospecifik dokumentation.
Command | Kommentar |
---|---|
New-AzKeyVaultCertificatePolicy | Skapar en minnesintern princip som representerar certifikatet |
Add-AzKeyVaultCertificate | Distribuerar principen till Key Vault-certifikat |
Set-AzKeyVaultSecret | Distribuerar principen till Key Vault-hemligheter |
New-AzVmssVaultCertificateConfig | Skapar en minnesintern konfiguration som representerar certifikatet på en virtuell dator |
Get-AzVmss | |
Add-AzVmssSecret | Lägger till certifikatet i minnesintern definition av VM-skalningsuppsättningen |
Update-AzVmss | Distribuerar den nya definitionen av VM-skalningsuppsättningen |
Nästa steg
Mer information om Azure PowerShell-modulen finns i Azure PowerShell-dokumentationen.
Ytterligare Azure PowerShell-exempel för Azure Service Fabric finns i Azure PowerShell-exemplen.