Dela via


Självstudie: Skydda en webbserver på en virtuell Windows-dator i Azure med TLS-certifikat som lagras i Key Vault

Gäller för: ✔️ Flexibla skalningsuppsättningar för virtuella Windows-datorer ✔️

Kommentar

För närvarande fungerar det här dokumentet endast för generaliserade avbildningar. Om du provar den här självstudien med hjälp av en specialiserad disk får du ett fel.

För att skydda webbservrar kan ett TLS-certifikat (Transport Layer Security) användas för att kryptera webbtrafik. TLS-certifikat kan lagras i Azure Key Vault och tillåta säkra distributioner av certifikat till virtuella Windows-datorer i Azure. I den här självstudiekursen får du lära du dig att:

  • Skapa ett Azure Key Vault.
  • Generera eller ladda upp ett certifikat till Key Vault.
  • Skapa en virtuell dator och installera IIS-webbservern.
  • Mata in certifikatet i den virtuella datorn och konfigurera IIS med en TLS-bindning.

Starta Azure Cloud Shell

Azure Cloud Shell är ett interaktivt gränssnitt som du kan använda för att utföra stegen i den här artikeln. Den har vanliga Azure-verktyg förinstallerat och har konfigurerats för användning med ditt konto.

Öppna Cloud Shell genom att välja Öppna Cloudshell i det övre högra hörnet i ett kodblock. Du kan också starta Cloud Shell i en separat webbläsarflik genom att gå till https://shell.azure.com/powershell. Välj Kopiera för att kopiera kodblocken, klistra in dem i Cloud Shell och tryck på Retur för att köra dem.

Översikt

Azure Key Vault skyddar krypteringsnycklar och hemligheter, som certifikat och lösenord. Key Vault förenklar certifikathanteringen och låter dig behålla kontrollen över nycklar som kommer åt certifikaten. Du kan skapa ett självsignerat certifikat i Key Vault eller ladda upp ett befintligt betrott certifikat som du redan äger.

I stället för att använda en anpassad VM-avbildning som innehåller inbakade certifikat kan du mata in certifikat i en virtuell dator som körs. Den här processen garanterar att de mest uppdaterade certifikaten är installerade på en webbserver under distributionen. Om du förnyar eller ersätter ett certifikat behöver du inte skapa en ny anpassad VM-avbildning. De senaste certifikaten matas in automatiskt när du skapar fler virtuella datorer. Under hela processen lämnar certifikaten aldrig Azure-plattformen och exponeras inte i något skript, kommandoradshistorik eller mall.

Skapa ett Azure Key Vault

Innan du kan skapa ett Key Vault och certifikat skapar du en resursgrupp med New-AzResourceGroup. I följande exempel skapas en resursgrupp med namnet myResourceGroupSecureWeb på platsen East US (USA, östra):

$resourceGroup = "myResourceGroupSecureWeb"
$location = "East US"
New-AzResourceGroup -ResourceGroupName $resourceGroup -Location $location

Skapa sedan ett Key Vault med New-AzKeyVault. Varje Key Vault kräver ett unikt namn och bör vara gemener. Ersätt mykeyvault med ditt eget unika Key Vault-namn i följande exempel:

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

Generera ett certifikat och lagra det i Key Vault

För produktionsanvändning bör du importera ett giltigt certifikat som signerats av en betrodd provider med Import-AzKeyVaultCertificate. I den här självstudien visar följande exempel hur du kan generera ett självsignerat certifikat med Add-AzKeyVaultCertificate som använder standardcertifikatprincipen från 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 

Skapa en virtuell dator

Ange ett administratörsanvändarnamn och lösenord för den virtuella datorn med Get-Credential:

$cred = Get-Credential

Nu kan du skapa den virtuella datorn med hjälp av New-AzVM. I följande exempel skapas en virtuell dator med namnet myVM på platsen EastUS (Östra USA). Om de inte redan finns skapas de stödande nätverksresurserna. För att tillåta säker webbtrafik öppnar cmdleten även 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"}'

Det tar några minuter att skapa den virtuella datorn. I det sista steget används tillägget för anpassat skript i Azure för att installera IIS-webbservern med Set-AzVmExtension.

Lägga till ett certifikat till en virtuell dator från Key Vault

Om du vill lägga till certifikatet från Key Vault till en virtuell dator hämtar du ID:t för certifikatet med Get-AzKeyVaultSecret. Lägg till certifikatet till den virtuella datorn med 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

Konfigurera IIS för att använda certifikatet

Använda tillägget för anpassat skript igen med Set-AzVMExtension för att uppdatera IIS-konfigurationen. Den här uppdateringen tillämpar certifikatet som matats in från Key Vault till ISS och konfigurerar webbindningen:

$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

Testa den säkra webbappen

Hämta den offentliga IP-adressen för den virtuella datorn med Get-AzPublicIPAddress. I följande exempel hämtas IP-adressen för myPublicIP som skapades tidigare:

Get-AzPublicIPAddress -ResourceGroupName $resourceGroup -Name "myPublicIPAddress" | select "IpAddress"

Nu kan du öppna en webbläsare och ange https://<myPublicIP> i adressfältet. Om du använde ett självsignerat certifikat och vill acceptera säkerhetsvarningen väljer du Information och sedan Fortsätt till webbsidan.

Din skyddade IIS-webbplats visas sedan som i exemplet nedan:

Skärmbild av webbläsaren som visar en säker IIS-webbplats.

Nästa steg

I den här självstudien har du skyddat en IIS-webbserver med ett TLS-certifikat som lagras i Azure Key Vault. Du har lärt dig att:

  • Skapa ett Azure Key Vault.
  • Generera eller ladda upp ett certifikat till Key Vault.
  • Skapa en virtuell dator och installera IIS-webbservern.
  • Mata in certifikatet i den virtuella datorn och konfigurera IIS med en TLS-bindning.

För fördefinierade skriptexempel för virtuella datorer, se: