Tutorial: Sichern eines Webservers auf einem virtuellen Windows-Computer in Azure mit in Key Vault gespeicherten TLS-Zertifikaten
Gilt für: ✔️ Windows-VMs ✔️ Flexible Skalierungsgruppen
Hinweis
Derzeit gilt dieses Dokument nur für generalisierte Images. Wenn Sie dieses Tutorial mit einem spezialisierten Datenträger durchführen, tritt ein Fehler auf.
Zum Sichern von Webservern kann ein TLS-Zertifikat (Transport Layer Security) zum Verschlüsseln des Webdatenverkehrs verwendet werden. TLS-Zertifikate können in Azure Key Vault gespeichert werden. Sie ermöglichen sichere Bereitstellungen von Zertifikaten auf virtuellen Windows-Computern (VMs) in Azure. In diesem Tutorial lernen Sie Folgendes:
- Erstellen Sie eine Azure Key Vault-Instanz.
- Generieren oder Hochladen eines Zertifikats in Key Vault.
- Erstellen einer VM und Installieren des IIS-Webservers.
- Einfügen des Zertifikats auf der VM und Konfigurieren von IIS mit einer TLS-Bindung.
Starten von Azure Cloud Shell
Azure Cloud Shell ist eine kostenlose interaktive Shell, mit der Sie die Schritte in diesem Artikel durchführen können. Sie verfügt über allgemeine vorinstallierte Tools und ist für die Verwendung mit Ihrem Konto konfiguriert.
Wählen Sie zum Öffnen von Cloud Shell oben rechts in einem Codeblock einfach die Option Cloud Shell öffnen aus. Sie können Cloud Shell auch auf einem separaten Browsertab starten, indem Sie zu https://shell.azure.com/powershell navigieren. Wählen Sie Kopieren aus, um die Blöcke mit dem Code zu kopieren. Fügen Sie sie anschließend in Cloud Shell ein, und drücken Sie die EINGABETASTE, um sie auszuführen.
Übersicht
Azure Key Vault schützt Kryptografieschlüssel und Geheimnisse, wie z.B. Zertifikate oder Kennwörter. Key Vault optimiert die Zertifikatverwaltung und ermöglicht Ihnen, die Kontrolle über Schlüssel zu behalten, die auf diese Zertifikate zugreifen. Sie können ein selbstsigniertes Zertifikat in Key Vault erstellen oder ein vorhandenes vertrauenswürdiges Zertifikat hochladen, das Sie bereits besitzen.
Anstatt ein benutzerdefiniertes VM-Image zu verwenden, in das die Zertifikate integriert sind, fügen Sie Zertifikate in eine VM ein, die ausgeführt wird. Dadurch wird sichergestellt, dass auf einem Webserver während der Bereitstellung die aktuellen Zertifikate installiert sind. Wenn Sie ein Zertifikat erneuern oder ersetzen, müssen Sie nicht auch noch ein neues benutzerdefiniertes VM-Image erstellen. Die neuesten Zertifikate werden beim Erstellen weiterer virtueller Computer automatisch eingefügt. Während des gesamten Prozesses verlässt das Zertifikat nie die Azure-Plattform, noch wird es in einem Skript, Befehlszeilenverlauf oder einer Vorlage verfügbar gemacht.
Erstellen einer Azure Key Vault-Instanz
Bevor Sie eine Key Vault-Instanz und Zertifikate erstellen, müssen Sie mit New-AzResourceGroup eine Ressourcengruppe erstellen. Im folgenden Beispiel wird eine Ressourcengruppe mit dem Namen myResourceGroupSecureWeb am Standort USA, Osten erstellt:
$resourceGroup = "myResourceGroupSecureWeb"
$location = "East US"
New-AzResourceGroup -ResourceGroupName $resourceGroup -Location $location
Erstellen Sie anschließend mit New-AzKeyVault einen Schlüsseltresor. Jede Key Vault-Instanz benötigt einen eindeutigen Namen, der nur aus Kleinbuchstaben besteht. Ersetzen Sie im folgenden Beispiel mykeyvault
durch Ihren eigenen eindeutigen Key Vault-Namen:
$keyvaultName="mykeyvault"
New-AzKeyVault -VaultName $keyvaultName `
-ResourceGroup $resourceGroup `
-Location $location `
-EnabledForDeployment
Generieren eines Zertifikats und Speichern des Zertifikats in Key Vault
Für die Produktion sollten Sie ein gültiges, von einem vertrauenswürdigen Anbieter signiertes Zertifikat mit Import-AzKeyVaultCertificate importieren. Für dieses Tutorial zeigt das folgende Beispiel, wie Sie ein selbstsigniertes Zertifikat mit Add-AzKeyVaultCertificate generieren können, das die Standardzertifikatrichtlinie von New-AzKeyVaultCertificatePolicy verwendet.
$policy = New-AzKeyVaultCertificatePolicy `
-SubjectName "CN=www.contoso.com" `
-SecretContentType "application/x-pkcs12" `
-IssuerName Self `
-ValidityInMonths 12
Add-AzKeyVaultCertificate `
-VaultName $keyvaultName `
-Name "mycert" `
-CertificatePolicy $policy
Erstellen eines virtuellen Computers
Legen Sie mit Get-Credential den Benutzernamen und das Kennwort des Administrators des virtuellen Computers fest:
$cred = Get-Credential
Nun können Sie mit New-AzVM den virtuellen Computer erstellen. Im folgenden Beispiel wird eine VM mit dem Namen myVM für den Standort EastUS erstellt. Falls sie nicht bereits vorhanden sind, werden die unterstützenden Netzwerkressourcen erstellt. Um sicheren Webdatenverkehr zuzulassen, öffnet das Cmdlet auch 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"}'
Die Erstellung des virtuellen Computers dauert einige Minuten. Im letzten Schritt wird die benutzerdefinierte Skripterweiterung von Azure zum Installieren des IIS-Webservers mit Set-AzVmExtension verwendet.
Hinzufügen eines Zertifikats zum virtuellen Computer aus Key Vault
Um das Zertifikat aus Key Vault zu einem virtuellen Computer hinzuzufügen, rufen Sie die ID des Zertifikats mit Get-AzKeyVaultSecret ab. Fügen Sie das Zertifikat mit Add-AzVMSecret dem virtuellen Computer hinzu:
$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
Konfigurieren von IIS zur Verwendung des Zertifikats
Verwenden Sie die benutzerdefinierte Skripterweiterung erneut mit Set-AzVMExtension, um die IIS-Konfiguration zu aktualisieren. Bei dieser Aktualisierung wird das aus Key Vault eingefügte Zertifikat auf IIS angewendet und die Webbindung konfiguriert:
$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 der sicheren Web-App
Rufen Sie mit Get-AzPublicIPAddress die öffentliche IP-Adresse Ihres virtuellen Computers ab. Im folgenden Beispiel wird die IP-Adresse für myPublicIP
abgerufen, die wir zuvor erstellt haben:
Get-AzPublicIPAddress -ResourceGroupName $resourceGroup -Name "myPublicIPAddress" | select "IpAddress"
Jetzt können Sie einen Webbrowser öffnen und https://<myPublicIP>
in die Adressleiste eingeben. Wenn Sie ein selbstsigniertes Zertifikat verwendet haben und die Sicherheitswarnung akzeptieren möchten, klicken Sie auf Details und anschließend auf Webseite trotzdem laden:
Die gesicherte IIS-Website wird dann wie im folgenden Beispiel angezeigt:
Nächste Schritte
In diesem Tutorial haben Sie einen IIS-Webserver mit einem in Azure Key Vault gespeicherten TLS-Zertifikat gesichert. Sie haben Folgendes gelernt:
- Erstellen Sie eine Azure Key Vault-Instanz.
- Generieren oder Hochladen eines Zertifikats in Key Vault.
- Erstellen einer VM und Installieren des IIS-Webservers.
- Einfügen des Zertifikats auf der VM und Konfigurieren von IIS mit einer TLS-Bindung.
Vordefinierte Skriptbeispiele für virtuelle Computer finden Sie unter: