Sdílet prostřednictvím


Nasazení virtuálního počítače s bezpečně uloženým certifikátem ve službě Azure Stack Hub

Tento článek popisuje, jak nasadit virtuální počítač služby Azure Stack Hub s nainstalovaným certifikátem služby Key Vault.

Přehled

Certifikáty se používají v mnoha scénářích, jako je ověřování ve službě Active Directory nebo šifrování webového provozu. Certifikáty můžete bezpečně ukládat jako tajné kódy v trezoru klíčů služby Azure Stack Hub. Výhody používání služby Azure Stack Hub Key Vault jsou:

  • Certifikáty nejsou vystaveny ve skriptu, historii příkazového řádku ani v šabloně.
  • Proces správy certifikátů je zjednodušený.
  • Máte kontrolu nad klíči, které přistupují k certifikátům.

Popis procesu

Následující kroky popisují proces potřebný k nasdílení certifikátu virtuálnímu počítači:

  1. Vytvořte heslo trezoru klíčů.
  2. Aktualizujte soubor azuredeploy.parameters.json.
  3. Nasaďte šablonu.

Poznámka

Tyto kroky můžete použít ze sady Azure Stack Development Kit (ASDK) nebo z externího klienta, pokud jste připojení přes síť VPN.

Požadavky

Vytvoření tajemství v trezoru klíčů

Následující skript vytvoří certifikát ve formátu .pfx, vytvoří trezor klíčů a uloží certifikát v trezoru klíčů jako tajný klíč. contentType tajného klíče musí být nastavena na pfx.

Důležitý

Při vytváření trezoru klíčů musíte použít parametr -EnabledForDeployment. Tento parametr zajišťuje, že se na trezor klíčů dá odkazovat ze šablon Azure Resource Manageru.

# Create a certificate in the .pfx format
New-SelfSignedCertificate `
  -certstorelocation cert:\LocalMachine\My `
  -dnsname contoso.microsoft.com

$pwd = ConvertTo-SecureString `
  -String "<Password used to export the certificate>" `
  -Force `
  -AsPlainText

Export-PfxCertificate `
  -cert "cert:\localMachine\my\<certificate thumbprint that was created in the previous step>" `
  -FilePath "<Fully qualified path to where the exported certificate can be stored>" `
  -Password $pwd

# Create a key vault and upload the certificate into the key vault as a secret
$vaultName = "contosovault"
$resourceGroup = "contosovaultrg"
$location = "local"
$secretName = "servicecert"
$fileName = "<Fully qualified path to where the exported certificate can be stored>"
$certPassword = "<Password used to export the certificate>"

$fileContentBytes = get-content $fileName `
  -Encoding Byte

$fileContentEncoded = [System.Convert]::ToBase64String($fileContentBytes)
$jsonObject = @"
{
"data": "$filecontentencoded",
"dataType" :"pfx",
"password": "$certPassword"
}
"@
$jsonObjectBytes = [System.Text.Encoding]::UTF8.GetBytes($jsonObject)
$jsonEncoded = [System.Convert]::ToBase64String($jsonObjectBytes)

New-AzResourceGroup `
  -Name $resourceGroup `
  -Location $location

New-AzKeyVault `
  -VaultName $vaultName `
  -ResourceGroupName $resourceGroup `
  -Location $location `
  -sku standard `
  -EnabledForDeployment

$secret = ConvertTo-SecureString `
  -String $jsonEncoded `
  -AsPlainText -Force

Set-AzureKeyVaultSecret `
  -VaultName $vaultName `
  -Name $secretName `
   -SecretValue $secret

Při spuštění tohoto skriptu výstup obsahuje tajné URI. Poznamenejte si tento identifikátor URI, protože na něj musíte odkazovat v push certifikátu v šabloně Windows Resource Manageru. Stáhněte složku šablony vm-push-certificate-windows do vývojového počítače. Tato složka obsahuje soubory azuredeploy.json a azuredeploy.parameters.json, které potřebujete v následujících krocích.

Upravte soubor azuredeploy.parameters.json podle hodnot prostředí. Důležité parametry jsou název trezoru, skupina prostředků trezoru a identifikátor URI tajného kódu (vygenerovaný předchozím skriptem). Následující část ukazuje příklad souboru parametrů.

Aktualizace souboru azuredeploy.parameters.json

Aktualizujte soubor azuredeploy.parameters.json pomocí identifikátoru URI vaultName, tajného klíče, VmNamea dalších parametrů podle vašeho prostředí. Následující soubor JSON ukazuje příklad souboru parametrů šablony:

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "newStorageAccountName": {
      "value": "kvstorage01"
    },
    "vmName": {
      "value": "VM1"
    },
    "vmSize": {
      "value": "Standard_D1_v2"
    },
    "adminUserName": {
      "value": "demouser"
    },
    "adminPassword": {
      "value": "demouser@123"
    },
    "vaultName": {
      "value": "contosovault"
    },
    "vaultResourceGroup": {
      "value": "contosovaultrg"
    },
    "secretUrlWithVersion": {
      "value": "https://testkv001.vault.local.azurestack.external/secrets/testcert002/82afeeb84f4442329ce06593502e7840"
    }
  }
}

Nasazení šablony

Nasaďte šablonu pomocí následujícího skriptu PowerShellu:

# Deploy a Resource Manager template to create a VM and push the secret to it
New-AzResourceGroupDeployment `
  -Name KVDeployment `
  -ResourceGroupName $resourceGroup `
  -TemplateFile "<Fully qualified path to the azuredeploy.json file>" `
  -TemplateParameterFile "<Fully qualified path to the azuredeploy.parameters.json file>"

Po úspěšném nasazení šablony se zobrazí následující výstup:

výsledků nasazení šablony

Azure Stack Hub odešle certifikát do virtuálního počítače během nasazování. Umístění certifikátu závisí na operačním systému virtuálního počítače:

  • Ve Windows se certifikát přidá do umístění LocalMachine s úložištěm certifikátů poskytnutého uživatelem.
  • V Linuxu se certifikát umístí do adresáře /var/lib/waagent s názvem souboru UppercaseThumbprint.crt pro soubor certifikátu X509 a UppercaseThumbprint.prv pro privátní klíč.

Vyřazení certifikátů

Vyřazení certifikátů je součástí procesu správy certifikátů. Starší verzi certifikátu nemůžete odstranit, ale můžete ji zakázat pomocí rutiny Set-AzureKeyVaultSecretAttribute.

Následující příklad ukazuje, jak zakázat certifikát. Pro parametry VaultName, Namea Version použijte vlastní hodnoty.

Set-AzureKeyVaultSecretAttribute -VaultName contosovault -Name servicecert -Version e3391a126b65414f93f6f9806743a1f7 -Enable 0

Další kroky