Tutorial: Sichern eines Webservers auf einem virtuellen Windows-Computer in Azure mit in Key Vault gespeicherten SSL-ZertifikatenTutorial: Secure a web server on a Windows virtual machine in Azure with SSL certificates stored in Key Vault

Zum Sichern von Webservern kann ein SSL-Zertifikat (Secure Sockets Layer) zum Verschlüsseln des Webdatenverkehrs verwendet werden.To secure web servers, a Secure Sockets Layer (SSL) certificate can be used to encrypt web traffic. Diese SSL-Zertifikate können in Azure Key Vault gespeichert werden. Sie ermöglichen sichere Bereitstellungen von Zertifikaten auf virtuellen Windows-Computern in Azure.These SSL certificates can be stored in Azure Key Vault, and allow secure deployments of certificates to Windows virtual machines (VMs) in Azure. In diesem Tutorial lernen Sie Folgendes:In this tutorial you learn how to:

  • Erstellen einer Azure Key Vault-InstanzCreate an Azure Key Vault
  • Generieren oder Hochladen eines Zertifikats in Key VaultGenerate or upload a certificate to the Key Vault
  • Erstellen eines virtuellen Computers und Installieren des IIS-WebserversCreate a VM and install the IIS web server
  • Einfügen des Zertifikats auf dem virtuellen Computer und Konfigurieren von IIS mit einer SSL-BindungInject the certificate into the VM and configure IIS with an SSL binding

Starten von Azure Cloud ShellLaunch Azure Cloud Shell

Azure Cloud Shell ist eine kostenlose interaktive Shell, mit der Sie die Schritte in diesem Artikel ausführen können.The Azure Cloud Shell is a free interactive shell that you can use to run the steps in this article. Sie verfügt über allgemeine vorinstallierte Tools und ist für die Verwendung mit Ihrem Konto konfiguriert.It has common Azure tools preinstalled and configured to use with your account.

Wählen Sie zum Öffnen von Cloud Shell oben rechts in einem Codeblock einfach die Option Ausprobieren.To open the Cloud Shell, just select Try it from the upper right corner of a code block. Sie können Cloud Shell auch auf einer separaten Browserregisterkarte starten, indem Sie zu https://shell.azure.com/powershell navigieren.You can also launch Cloud Shell in a separate browser tab by going to https://shell.azure.com/powershell. Wählen Sie Kopieren, um die Blöcke mit dem Code zu kopieren. Fügen Sie ihn anschließend in Cloud Shell ein, und drücken Sie die EINGABETASTE, um ihn auszuführen.Select Copy to copy the blocks of code, paste it into the Cloud Shell, and press enter to run it.

ÜbersichtOverview

Azure Key Vault schützt Kryptografieschlüssel und geheime Schlüssel, solche Zertifikate oder Kennwörter.Azure Key Vault safeguards cryptographic keys and secrets, such certificates or passwords. Key Vault optimiert die Zertifikatverwaltung und ermöglicht Ihnen, die Kontrolle über Schlüssel zu behalten, die auf diese Zertifikate zugreifen.Key Vault helps streamline the certificate management process and enables you to maintain control of keys that access those certificates. Sie können ein selbstsigniertes Zertifikat in Key Vault erstellen oder ein vorhandenes vertrauenswürdiges Zertifikat verwenden, das Sie bereits besitzen.You can create a self-signed certificate inside Key Vault, or upload an existing, trusted certificate that you already own.

Anstatt ein benutzerdefiniertes VM-Image zu verwenden, in dem die Zertifikate integriert sind, fügen Sie Zertifikate in einen ausgeführten virtuellen Computer ein.Rather than using a custom VM image that includes certificates baked-in, you inject certificates into a running VM. Dadurch wird sichergestellt, dass auf einem Webserver während der Bereitstellung die aktuellen Zertifikate installiert sind.This process ensures that the most up-to-date certificates are installed on a web server during deployment. Wenn Sie ein Zertifikat erneuern oder ersetzen, müssen Sie nicht auch noch ein neues benutzerdefiniertes VM-Image erstellen.If you renew or replace a certificate, you don't also have to create a new custom VM image. Die neuesten Zertifikate werden beim Erstellen weiterer virtueller Computer automatisch eingefügt.The latest certificates are automatically injected as you create additional VMs. 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.During the whole process, the certificates never leave the Azure platform or are exposed in a script, command-line history, or template.

Erstellen einer Azure Key Vault-InstanzCreate an Azure Key Vault

Bevor Sie eine Key Vault-Instanz und Zertifikate erstellen, müssen Sie mit New-AzResourceGroup eine Ressourcengruppe erstellen.Before you can create a Key Vault and certificates, create a resource group with New-AzResourceGroup. Im folgenden Beispiel wird eine Ressourcengruppe mit dem Namen myResourceGroupSecureWeb am Standort USA, Osten erstellt:The following example creates a resource group named myResourceGroupSecureWeb in the East US location:

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

Erstellen Sie anschließend mit New-AzKeyVault einen Schlüsseltresor.Next, create a Key Vault with New-AzKeyVault. Jede Key Vault-Instanz benötigt einen eindeutigen Namen, der nur aus Kleinbuchstaben besteht.Each Key Vault requires a unique name, and should be all lower case. Ersetzen Sie mykeyvault im folgenden Beispiel durch Ihren eigenen eindeutigen Key Vault-Namen:Replace mykeyvault in the following example with your own unique Key Vault name:

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

Generieren eines Zertifikats und Speichern in Key VaultGenerate a certificate and store in Key Vault

Für die Produktion sollten Sie ein gültiges, von einem vertrauenswürdigen Anbieter signiertes Zertifikat mit Import-AzKeyVaultCertificate importieren.For production use, you should import a valid certificate signed by trusted provider with Import-AzKeyVaultCertificate. 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.For this tutorial, the following example shows how you can generate a self-signed certificate with Add-AzKeyVaultCertificate that uses the default certificate policy from 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 

Erstellen eines virtuellen ComputersCreate a virtual machine

Legen Sie mit Get-Credential den Benutzernamen und das Kennwort des Administrators des virtuellen Computers fest:Set an administrator username and password for the VM with Get-Credential:

$cred = Get-Credential

Nun können Sie mit New-AzVM den virtuellen Computer erstellen.Now you can create the VM with New-AzVM. Im folgenden Beispiel wird eine VM mit dem Namen myVM für den Standort EastUS erstellt.The following example creates a VM named myVM in the EastUS location. Falls sie nicht bereits vorhanden sind, werden die unterstützenden Netzwerkressourcen erstellt.If they do not already exist, the supporting network resources are created. Um sicheren Webdatenverkehr zuzulassen, öffnet das Cmdlet auch Port 443.To allow secure web traffic, the cmdlet also opens 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.It takes a few minutes for the VM to be created. Im letzten Schritt wird die benutzerdefinierte Skripterweiterung von Azure zum Installieren des IIS-Webservers mit Set-AzVmExtension verwendet.The last step uses the Azure Custom Script Extension to install the IIS web server with Set-AzVmExtension.

Hinzufügen eines Zertifikats zum virtuellen Computer aus Key VaultAdd a certificate to VM from Key Vault

Um das Zertifikat aus Key Vault zu einem virtuellen Computer hinzuzufügen, rufen Sie die ID des Zertifikats mit Get-AzKeyVaultSecret ab.To add the certificate from Key Vault to a VM, obtain the ID of your certificate with Get-AzKeyVaultSecret. Fügen Sie das Zertifikat mit Add-AzVMSecret dem virtuellen Computer hinzu:Add the certificate to the VM with 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 -ResourceGroupName $resourceGroup -VM $vm

Konfigurieren von IIS zur Verwendung des ZertifikatsConfigure IIS to use the certificate

Verwenden Sie die benutzerdefinierte Skripterweiterung erneut mit Set-AzVMExtension, um die IIS-Konfiguration zu aktualisieren.Use the Custom Script Extension again with Set-AzVMExtension to update the IIS configuration. Bei dieser Aktualisierung wird das aus Key Vault eingefügte Zertifikat auf IIS angewendet und die Webbindung konfiguriert:This update applies the certificate injected from Key Vault to IIS and configures the web binding:

$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-AppTest the secure web app

Rufen Sie mit Get-AzPublicIPAddress die öffentliche IP-Adresse Ihres virtuellen Computers ab.Obtain the public IP address of your VM with Get-AzPublicIPAddress. Im folgenden Beispiel wird die IP-Adresse für myPublicIP abgerufen, die wir zuvor erstellt haben:The following example obtains the IP address for myPublicIP created earlier:

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

Jetzt können Sie einen Webbrowser öffnen und https://<myPublicIP> in die Adressleiste eingeben.Now you can open a web browser and enter https://<myPublicIP> in the address bar. Wenn Sie ein selbstsigniertes Zertifikat verwendet haben und die Sicherheitswarnung akzeptieren möchten, klicken Sie auf Details und anschließend auf Webseite trotzdem laden:To accept the security warning if you used a self-signed certificate, select Details and then Go on to the webpage:

Akzeptieren der Webbrowser-Sicherheitswarnung

Die gesicherte IIS-Website wird dann wie im folgenden Beispiel angezeigt:Your secured IIS website is then displayed as in the following example:

Anzeigen der ausgeführten sicheren IIS-Website

Nächste SchritteNext steps

In diesem Tutorial haben Sie einen IIS-Webserver mit einem in Azure Key Vault gespeicherten SSL-Zertifikat gesichert.In this tutorial, you secured an IIS web server with an SSL certificate stored in Azure Key Vault. Es wurde Folgendes vermittelt:You learned how to:

  • Erstellen einer Azure Key Vault-InstanzCreate an Azure Key Vault
  • Generieren oder Hochladen eines Zertifikats in Key VaultGenerate or upload a certificate to the Key Vault
  • Erstellen eines virtuellen Computers und Installieren des IIS-WebserversCreate a VM and install the IIS web server
  • Einfügen des Zertifikats auf dem virtuellen Computer und Konfigurieren von IIS mit einer SSL-BindungInject the certificate into the VM and configure IIS with an SSL binding

Folgen Sie diesem Link, um sich vordefinierte Skriptbeispiele für virtuelle Computer anzusehen.Follow this link to see pre-built virtual machine script samples.