Zelfstudie: Een webserver beveiligen op een virtuele Windows-machine in Azure 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 te gebruiken 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 naar 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 Sleutelkluis.
- Maak een VIRTUELE machine en installeer de IIS-webserver.
- Injecteer het certificaat in de virtuele machine 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 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 deze 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 hebt.
In plaats van een aangepaste VM-installatiekopieën te gebruiken die certificaten bevat die zijn ingebouwd, injecteert u certificaten in een actieve VM. 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 mykeyvault
door 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
Maak een virtuele machine
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 deze nog niet bestaan, worden de ondersteunende netwerkbronnen 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.
Uw beveiligde IIS-website wordt vervolgens weergegeven zoals in het volgende voorbeeld:
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 Sleutelkluis.
- Maak een VIRTUELE machine en installeer de IIS-webserver.
- Injecteer het certificaat in de virtuele machine en configureer IIS met een TLS-binding.
Zie voor vooraf gemaakte voorbeelden van virtuele-machinescripts: