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:
- Vytvořte heslo trezoru klíčů.
- Aktualizujte soubor azuredeploy.parameters.json.
- 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
- Musíte se přihlásit k odběru nabídky, která zahrnuje službu Key Vault.
- Instalace PowerShellu pro Azure Stack Hub.
- konfigurace uživatelského prostředí PowerShellu služby Azure Stack Hub.
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.
- moduly Az
- moduly AzureRM
# 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, VmName
a 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:
- Az moduly
- moduly AzureRM
# 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:
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
, Name
a Version
použijte vlastní hodnoty.
Set-AzureKeyVaultSecretAttribute -VaultName contosovault -Name servicecert -Version e3391a126b65414f93f6f9806743a1f7 -Enable 0