1

Powershell コマンド New-AzureRmVpnClientRootCertificate を使用する代わりに、Azure ARM テンプレートを使用してクライアント ルート証明書をアップロードするにはどうすればよいですか? テンプレートに環境全体があり、それが唯一欠けているものです。

4

1 に答える 1

2

VM の OSProfile セクションに、次のように記述できます。

"secrets": [
              {
                "sourceVault": {
                  "id": "[parameters('sourceVaultValue')]"
                },
                "vaultCertificates": [
                  {
                    "certificateStore": "[parameters('certificateStoreValue')]",
                    "certificateUrl": "[parameters('certificateUrlValue')]"
                  }
                ]
              }

ソース コンテナーの値は "/subscriptions/subId/resourceGroups/RGName/providers/Microsoft.KeyVault/vaults/KVName" です。

cert store の値は My または使用するストアです。

証明書 URL の値は " https://KVName.vault.azure.net:443/secrets/CertName/certVersionNumber "です。

したがって、明らかに KeyVault を作成し、証明書をシークレットとして追加する必要があります。次のように、証明書を Base 64 でエンコードし、その文字列をアップロードすることでこれを行います。

$flag = [System.Security.Cryptography.X509Certificates.X509KeyStorageFlags]::Exportable
$collection = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2Collection 
$collection.Import($pfxFilePath, $pwd, $flag)
$pkcs12ContentType = [System.Security.Cryptography.X509Certificates.X509ContentType]::Pkcs12
$clearBytes = $collection.Export($pkcs12ContentType)
$fileContentEncoded = [System.Convert]::ToBase64String($clearBytes)

$jsonObject = @{
    data = $filecontentencoded
    dataType = 'pfx'
 } | ConvertTo-Json

 $jsonObjectBytes = [System.Text.Encoding]::UTF8.GetBytes($jsonObject)
 $jsonEncoded = [System.Convert]::ToBase64String($jsonObjectBytes)
 $secret = ConvertTo-SecureString -String $jsonEncoded -AsPlainText -Force

 return $secret

ここで、$pfxFilePath と $pwd は証明書へのパス、pwd はパスワードです。

次に、Set-AzureKeyVaultSecret -SecretValue $secret (およびその他のパラメーター)を使用してアップロードします

于 2016-08-26T15:44:03.327 に答える