Kurz: Zabezpečení webového serveru na virtuálním počítači s Windows v Azure pomocí certifikátů TLS uložených v 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é image. Pokud se pokusíte o tento kurz pomocí specializovaného disku, zobrazí se chyba.

K zabezpečení webových serverů je možné k šifrování webového provozu použít certifikát TLS (Transport Layer Security). Certifikáty TLS je možné ukládat v Azure Key Vault a umožnit zabezpečené nasazení certifikátů do virtuálních počítačů s Windows v Azure. Co se v tomto kurzu naučíte:

  • Vytvořte Key Vault Azure.
  • Vygenerujte nebo nahrajte certifikát do 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 s vazbou 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 Otevřít 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 Shell 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. Certifikát podepsaný svým držitelem můžete vytvořit uvnitř 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 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 Key Vault pomocí rutiny New-AzKeyVault. Každý Key Vault vyžaduje jedinečný název a měl by obsahovat malá písmena. V následujícím příkladu nahraďte mykeyvault vlastním jedinečným názvem Key Vault:

$keyvaultName="mykeyvault"
New-AzKeyVault -VaultName $keyvaultName `
    -ResourceGroup $resourceGroup `
    -Location $location `
    -EnabledForDeployment

Vygenerování certifikátu a jeho uložení v Key Vault

Pro použití v produkčním prostředí byste měli importovat platný certifikát podepsaný důvěryhodným poskytovatelem pomocí Import-AzKeyVaultCertificate. Následující příklad pro účely tohoto kurzu 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 virtuální počítač vytvořit 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. V posledním kroku se pomocí rozšíření vlastních skriptů Azure nainstaluje webový server služby IIS pomocí rutiny 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 z 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 upozornění zabezpečení přijmout, pokud jste použili certifikát podepsaný svým držitelem, vyberte Podrobnosti a pak Přejděte na webovou stránku:

Snímek obrazovky s upozorněním zabezpečení webového prohlížeče

Potom se zobrazí váš zabezpečený web služby IIS, jak je znázorněno v následujícím příkladu:

Snímek obrazovky prohlížeče se zabezpečeným webem služby IIS

Další kroky

V tomto kurzu jste zabezpečili webový server SLUŽBY IIS pomocí certifikátu TLS uloženého v Azure Key Vault. Naučili jste se:

  • Vytvořte Key Vault Azure.
  • Vygenerujte nebo nahrajte certifikát do 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 s vazbou TLS.

Ukázky předem připravených skriptů virtuálních počítačů najdete tady: