アプリケーション証明書の Service Fabric クラスターへの追加

このサンプル スクリプトでは、Key Vault に証明書を作成して、クラスターが実行されている仮想マシン スケール セットのいずれかにデプロイする方法について説明します。 このシナリオは、Service Fabric を直接使用しませんが、Key Vault と仮想マシン スケール セットに依存します。

Note

Azure を操作するには、Azure Az PowerShell モジュールを使用することをお勧めします。 作業を始めるには、「Azure PowerShell をインストールする」を参照してください。 Az PowerShell モジュールに移行する方法については、「AzureRM から Az への Azure PowerShell の移行」を参照してください。

必要に応じて、Azure PowerShell ガイドの手順に従って Azure PowerShell をインストールし、Connect-AzAccount を実行して、Azure との接続を作成します。

Key Vault に証明書を作成する

$VaultName = ""
$CertName = ""
$SubjectName = "CN="

$policy = New-AzKeyVaultCertificatePolicy -SubjectName $SubjectName -IssuerName Self -ValidityInMonths 12
Add-AzKeyVaultCertificate -VaultName $VaultName -Name $CertName -CertificatePolicy $policy

あるいは既存の証明書を 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

証明書を使用して仮想マシン スケール セットのプロファイルを更新する

$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

仮想マシン スケール セットを更新する

Update-AzVmss -ResourceGroupName $ResourceGroupName -VirtualMachineScaleSet $VMSS -VMScaleSetName $VMSSName

クラスター内の複数のノードの種類に証明書を配置する場合は、このスクリプトの 2 番目と 3 番目の部分を、証明書を保持する必要があるノードの種類ごとに繰り返す必要があります。

スクリプトの説明

このスクリプトでは以下のコマンドを使用します。表内の各コマンドは、それぞれのドキュメントにリンクされています。

command Notes
New-AzKeyVaultCertificatePolicy 証明書を表すインメモリ ポリシーを作成します
Add-AzKeyVaultCertificate ポリシーをキー コンテナーの証明書にデプロイします
Set-AzKeyVaultSecret ポリシーをキー コンテナーのシークレットにデプロイします
New-AzVmssVaultCertificateConfig VM 内の証明書を表すインメモリ構成を作成します
Get-AzVmss
Add-AzVmssSecret 仮想マシン スケール セットのインメモリ定義に証明書を追加します
Update-AzVmss 仮想マシン スケール セットの新しい定義をデプロイします

次のステップ

Azure PowerShell モジュールの詳細については、Azure PowerShell のドキュメントを参照してください。

その他の Azure Service Fabric 用 Azure PowerShell サンプルは、Azure PowerShell サンプルのページにあります。