Share via


Zelfstudie: Een webserver op een virtuele Windows-machine in Azure beveiligen met TLS-certificaten die zijn opgeslagen in Key Vault

Van toepassing op: ✔️ Flexibele schaalsets voor Windows-VM's ✔️

Notitie

Dit document werkt momenteel alleen voor gegeneraliseerde installatiekopieën. Als u deze zelfstudie probeert met behulp van een gespecialiseerde schijf, krijgt u een foutmelding.

Voor het beveiligen van webservers kan een TLS-certificaat (Transport Layer Security) worden gebruikt om webverkeer te versleutelen. TLS-certificaten kunnen worden opgeslagen in Azure Key Vault en veilige implementaties van certificaten op virtuele Windows-machines (VM's) in Azure toestaan. In deze zelfstudie leert u het volgende:

  • Maak een Azure-Key Vault.
  • Genereer of upload een certificaat naar de Key Vault.
  • Maak een virtuele machine en installeer de IIS-webserver.
  • Injecteer het certificaat in de VM en configureer IIS met een TLS-binding.

Azure Cloud Shell starten

Azure Cloud Shell is een gratis interactieve shell waarmee u de stappen in dit artikel kunt uitvoeren. In deze shell zijn algemene Azure-hulpprogramma's vooraf geïnstalleerd en geconfigureerd voor gebruik met uw account.

Als u de Cloud Shell wilt openen, selecteert u Cloudshell openen in de rechterbovenhoek van een codeblok. U kunt Cloud Shell ook openen in een afzonderlijk browsertabblad door naar https://shell.azure.com/powershell te gaan. Selecteer Kopiëren om de codeblokken te kopiëren, plak ze in de Cloud Shell en druk op Enter om ze uit te voeren.

Overzicht

Azure Key Vault beschermt cryptografische sleutels en geheimen, zoals certificaten of wachtwoorden. Key Vault helpt het beheerproces voor certificaten te stroomlijnen en zorgt dat u de controle houdt over de sleutels waarmee deze certificaten toegankelijk zijn. U kunt een zelfondertekend certificaat maken in Key Vault of u kunt een bestaand, vertrouwd certificaat uploaden dat u al bezit.

In plaats van een aangepaste VM-installatiekopieën te gebruiken die certificaten bevat, kunt u certificaten in een actieve VM injecteren. Dit proces zorgt ervoor dat de meest recente certificaten tijdens de implementatie op een webserver zijn geïnstalleerd. Als u een certificaat wilt vernieuwen of vervangen, hoeft u niet ook een nieuwe aangepaste VM-installatiekopie te maken. De meest recente certificaten worden automatisch geïnjecteerd wanneer u meer VM's maakt. Tijdens het hele proces verlaten de certificaten nooit het Azure-platform of zijn ze blootgesteld in een script, opdrachtregelgeschiedenis of sjabloon.

Een Azure Key Vault maken

Voordat u een Key Vault en certificaten kunt maken, moet u eerst een resourcegroep maken met New-AzResourceGroup. In het volgende voorbeeld wordt een resourcegroep met de naam myResourceGroupSecureWeb gemaakt op de locatie VS - oost:

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

Maak vervolgens een sleutelkluis met New-AzKeyVault. Elke Key Vault vereist een unieke naam en moet allemaal kleine letters bevatten. Vervang door mykeyvault uw eigen unieke Key Vault naam in het volgende voorbeeld:

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

Een certificaat genereren en opslaan in Key Vault

Voor productiegebruik moet u een geldig certificaat importeren dat is ondertekend door een vertrouwde provider met Import-AzKeyVaultCertificate. Voor deze zelfstudie toont het volgende voorbeeld hoe u een zelfondertekend certificaat kunt genereren met Add-AzKeyVaultCertificate dat gebruikmaakt van het standaardbeleid voor certificaten van 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 

Een virtuele machine maken

Stel een beheerdersnaam en -wachtwoord in voor de virtuele machine met Get-Credential:

$cred = Get-Credential

U kunt de virtuele machine nu maken met New-AzVM. In het volgende voorbeeld wordt een VM met de naam myVM gemaakt op de locatie VS Oost. Als ze nog niet bestaan, worden de ondersteunende netwerkresources gemaakt. Om beveiligd webverkeer mogelijk te maken, opent de cmdlet ook poort 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"}'

Het duurt enkele minuten voordat de virtuele machine wordt gemaakt. In de laatste stap wordt gebruikgemaakt van de Azure-extensie voor aangepaste scripts om de IIS-webserver te installeren met Set AzVmExtension.

Een certificaat toevoegen aan de virtuele machine vanuit Key Vault

Als u het certificaat vanuit Key Vault wilt toevoegen aan een virtuele machine, haalt u de id van het certificaat op met Get-AzKeyVaultSecret. Voeg het certificaat toe aan de virtuele machine met 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

IIS configureren voor gebruik van het certificaat

Gebruik de extensie voor aangepaste scripts opnieuw met Set AzVMExtension om de IIS-configuratie bij te werken. Deze update is van toepassing op het certificaat dat is ingevoerd vanuit Key Vault en configureert de webbinding:

$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

Testen van de beveiligde web-app

Haal het openbare IP-adres van uw virtuele machine op met Get-AzPublicIPAddress. In het volgende voorbeeld wordt het IP-adres opgehaald voor de myPublicIP die eerder is gemaakt:

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

Nu kunt u een webbrowser openen en https://<myPublicIP> in de adresbalk invoeren. Voor het accepteren van de beveiligingswaarschuwing als u een zelfondertekend certificaat hebt gebruikt, selecteert u Details en vervolgens Ga verder naar de webpagina:

Schermopname van de beveiligingswaarschuwing van de webbrowser.

Uw beveiligde IIS-website wordt vervolgens weergegeven zoals in het volgende voorbeeld:

Schermopname van browser met beveiligde IIS-site.

Volgende stappen

In deze zelfstudie hebt u een IIS-webserver beveiligd met een TLS-certificaat dat is opgeslagen in Azure Key Vault. U hebt geleerd hoe u:

  • Maak een Azure-Key Vault.
  • Genereer of upload een certificaat naar de Key Vault.
  • Maak een virtuele machine en installeer de IIS-webserver.
  • Injecteer het certificaat in de VM en configureer IIS met een TLS-binding.

Zie voor vooraf gemaakte voorbeelden van virtuele-machinescripts: