Kurz: Zabezpečení webového serveru na virtuálním počítači s Windows v Azure pomocí certifikátů TLS uložených ve službě Key Vault
Platí pro: ✔️ Flexibilní škálovací sady virtuálních ✔️ počítačů s Windows
Poznámka:
V současné době tento dokument funguje jenom pro generalizované obrázky. Pokud se pokusíte o tento kurz pomocí specializovaného disku, zobrazí se chyba.
K zabezpečení webových serverů lze k šifrování webového provozu použít certifikát TLS (Transport Layer Security). Certifikáty TLS se dají ukládat ve službě Azure Key Vault a umožňují zabezpečené nasazení certifikátů do virtuálních počítačů s Windows v Azure. V tomto kurzu se naučíte:
- Vytvoření služby Azure Key Vault
- Vygenerujte nebo nahrajte certifikát do služby Key Vault.
- Vytvořte virtuální počítač a nainstalujte webový server služby IIS.
- Vložte certifikát do virtuálního počítače a nakonfigurujte službu IIS pomocí vazby TLS.
Spuštění služby Azure Cloud Shell
Azure Cloud Shell je bezplatné interaktivní prostředí, které můžete použít k provedení kroků v tomto článku. Má předinstalované obecné nástroje Azure, které jsou nakonfigurované pro použití s vaším účtem.
Pokud chcete otevřít Cloud Shell, stačí v pravém horním rohu bloku kódu vybrat Open CloudShell . Cloud Shell můžete spustit také na samostatné kartě prohlížeče na adrese https://shell.azure.com/powershell. Výběrem možnosti Kopírovat zkopírujte bloky kódu, vložte je do Cloud Shellu a stisknutím klávesy Enter je spusťte.
Přehled
Azure Key Vault chrání kryptografické klíče a tajné kódy, jako jsou certifikáty a hesla. Key Vault pomáhá zjednodušit proces správy certifikátů a zajišťuje kontrolu nad klíči, které se používají k přístupu k těmto certifikátům. Můžete vytvořit certifikát podepsaný svým držitelem uvnitř služby Key Vault nebo můžete nahrát existující důvěryhodný certifikát, který už vlastníte.
Místo použití vlastní image virtuálního počítače, která obsahuje vložené certifikáty, vložte certifikáty do spuštěného virtuálního počítače. Tento proces zajistí, že se při nasazování na webový server nainstalují nejnovější certifikáty. Zároveň pokud obnovíte nebo nahradíte certifikát, nebudete muset vytvářet novou vlastní image virtuálního počítače. Nejnovější certifikáty se automaticky vloží při vytváření dalších virtuálních počítačů. Během celého procesu certifikáty neopustí platformu Azure ani nejsou zveřejněné v žádném skriptu, historii příkazového řádku nebo šabloně.
Vytvoření služby Azure Key Vault
Před vytvořením služby Key Vault a certifikátů vytvořte skupinu prostředků pomocí rutiny New-AzResourceGroup. Následující příklad vytvoří skupinu prostředků s názvem myResourceGroupSecureWeb v umístění East US:
$resourceGroup = "myResourceGroupSecureWeb"
$location = "East US"
New-AzResourceGroup -ResourceGroupName $resourceGroup -Location $location
Dále vytvořte službu Key Vault pomocí New-AzKeyVault. Každá služba Key Vault vyžaduje jedinečný název a měla by obsahovat malá písmena. V následujícím příkladu nahraďte mykeyvault
vlastním jedinečným názvem služby Key Vault:
$keyvaultName="mykeyvault"
New-AzKeyVault -VaultName $keyvaultName `
-ResourceGroup $resourceGroup `
-Location $location `
-EnabledForDeployment
Vygenerování certifikátu a jeho uložení ve službě Key Vault
V produkčním prostředí byste měli importovat platný certifikát podepsaný důvěryhodným poskytovatelem pomocí Import-AzKeyVaultCertificate. V tomto kurzu následující příklad ukazuje, jak můžete vygenerovat certifikát podepsaný svým držitelem pomocí add-AzKeyVaultCertificate , který používá výchozí zásady certifikátu z New-AzKeyVaultCertificatePolicy.
$policy = New-AzKeyVaultCertificatePolicy `
-SubjectName "CN=www.contoso.com" `
-SecretContentType "application/x-pkcs12" `
-IssuerName Self `
-ValidityInMonths 12
Add-AzKeyVaultCertificate `
-VaultName $keyvaultName `
-Name "mycert" `
-CertificatePolicy $policy
Vytvoření virtuálního počítače
Pomocí rutiny Get-Credential nastavte uživatelské jméno a heslo správce virtuálního počítače:
$cred = Get-Credential
Teď můžete vytvořit virtuální počítač pomocí Rutiny New-AzVM. Následující příklad vytvoří virtuální počítač s názvem myVM v umístění EastUS. Pokud ještě neexistují, vytvoří se podpůrné síťové prostředky. Za účelem povolení zabezpečeného webového provozu rutina také otevře port 443.
# Create a VM
New-AzVm `
-ResourceGroupName $resourceGroup `
-Name "myVM" `
-Location $location `
-VirtualNetworkName "myVnet" `
-SubnetName "mySubnet" `
-SecurityGroupName "myNetworkSecurityGroup" `
-PublicIpAddressName "myPublicIpAddress" `
-Credential $cred `
-OpenPorts 443
# Use the Custom Script Extension to install IIS
Set-AzVMExtension -ResourceGroupName $resourceGroup `
-ExtensionName "IIS" `
-VMName "myVM" `
-Location $location `
-Publisher "Microsoft.Compute" `
-ExtensionType "CustomScriptExtension" `
-TypeHandlerVersion 1.8 `
-SettingString '{"commandToExecute":"powershell Add-WindowsFeature Web-Server -IncludeManagementTools"}'
Vytvoření virtuálního počítače trvá několik minut. Poslední krok používá rozšíření vlastních skriptů Azure k instalaci webového serveru IIS pomocí set-AzVmExtension.
Přidání certifikátu ze služby Key Vault do virtuálního počítače
Pokud chcete přidat certifikát ze služby Key Vault do virtuálního počítače, získejte ID certifikátu pomocí rutiny Get-AzKeyVaultSecret. Přidejte certifikát do virtuálního počítače pomocí rutiny Add-AzVMSecret:
$certURL=(Get-AzKeyVaultSecret -VaultName $keyvaultName -Name "mycert").id
$vm=Get-AzVM -ResourceGroupName $resourceGroup -Name "myVM"
$vaultId=(Get-AzKeyVault -ResourceGroupName $resourceGroup -VaultName $keyVaultName).ResourceId
$vm = Add-AzVMSecret -VM $vm -SourceVaultId $vaultId -CertificateStore "My" -CertificateUrl $certURL | Update-AzVM
Konfigurace služby IIS na použití certifikátu
Znovu použijte rozšíření vlastních skriptů s rutinou Set-AzVMExtension a aktualizujte konfiguraci služby IIS. Tato aktualizace použije certifikát vložený ze služby Key Vault do IIS a nakonfiguruje webovou vazbu:
$publicSettings = '{
"fileUris":["https://raw.githubusercontent.com/Azure-Samples/compute-automation-configurations/master/secure-iis.ps1"],
"commandToExecute":"powershell -ExecutionPolicy Unrestricted -File secure-iis.ps1"
}'
Set-AzVMExtension -ResourceGroupName $resourceGroup `
-ExtensionName "IIS" `
-VMName "myVM" `
-Location $location `
-Publisher "Microsoft.Compute" `
-ExtensionType "CustomScriptExtension" `
-TypeHandlerVersion 1.8 `
-SettingString $publicSettings
Testování zabezpečené webové aplikace
Získejte veřejnou IP adresu virtuálního počítače pomocí rutiny Get-AzPublicIPAddress. Následující příklad získá dříve vytvořenou IP adresu pro myPublicIP
:
Get-AzPublicIPAddress -ResourceGroupName $resourceGroup -Name "myPublicIPAddress" | select "IpAddress"
Nyní můžete otevřít webový prohlížeč a do adresního řádku zadat https://<myPublicIP>
. Pokud chcete přijímat upozornění zabezpečení v případě použití certifikátu podepsaného svým držitelem (self-signed certificate), vyberte Podrobnosti a potom Pokračovat na web.
Potom se zobrazí váš zabezpečený web služby IIS, jak je znázorněno v následujícím příkladu:
Další kroky
V tomto kurzu jste zabezpečili webový server služby IIS pomocí certifikátu TLS uloženého ve službě Azure Key Vault. Naučili jste se:
- Vytvoření služby Azure Key Vault
- Vygenerujte nebo nahrajte certifikát do služby Key Vault.
- Vytvořte virtuální počítač a nainstalujte webový server služby IIS.
- Vložte certifikát do virtuálního počítače a nakonfigurujte službu IIS pomocí vazby TLS.
Ukázky předem připravených skriptů virtuálních počítačů najdete tady: