Samouczek: zabezpieczanie serwera internetowego na maszynie wirtualnej z systemem Windows na platformie Azure przy użyciu certyfikatów TLS przechowywanych w usłudze Key Vault

Dotyczy: ✔️ Maszyny wirtualne z systemem Windows — elastyczne zestawy skalowania ✔️

Uwaga

Obecnie ten dokument działa tylko w przypadku uogólnionych obrazów. Jeśli spróbujesz wykonać ten samouczek przy użyciu dysku wyspecjalizowanego, zostanie wyświetlony błąd.

Aby zabezpieczyć serwery internetowe, można użyć certyfikatu Transport Layer Security (TLS) do szyfrowania ruchu internetowego. Certyfikaty TLS można przechowywać w usłudze Azure Key Vault i zezwalać na bezpieczne wdrażanie certyfikatów na maszynach wirtualnych z systemem Windows na platformie Azure. Ten samouczek zawiera informacje na temat wykonywania następujących czynności:

  • Tworzenie usługi Azure Key Vault.
  • Generowanie lub przekazywanie certyfikatu do usługi Key Vault.
  • Utwórz maszynę wirtualną i zainstaluj serwer internetowy usług IIS.
  • Wstrzykiwanie certyfikatu do maszyny wirtualnej i konfigurowanie usług IIS za pomocą powiązania TLS.

Uruchamianie usługi Azure Cloud Shell

Usługa Azure Cloud Shell to bezpłatna interaktywna powłoka, której możesz używać do wykonywania kroków opisanych w tym artykule. Udostępnia ona wstępnie zainstalowane i najczęściej używane narzędzia platformy Azure, które są skonfigurowane do użycia na koncie.

Aby otworzyć usługę Cloud Shell, wybierz pozycję Otwórz program CloudShell w prawym górnym rogu bloku kodu. Możesz również uruchomić usługę Cloud Shell w oddzielnej karcie przeglądarki, przechodząc do strony https://shell.azure.com/powershell. Wybierz pozycję Kopiuj , aby skopiować bloki kodu, wklej je w usłudze Cloud Shell, a następnie naciśnij Enter, aby je uruchomić.

Omówienie

Usługa Azure Key Vault chroni klucze kryptograficzne i klucze tajne, takie jak certyfikaty lub hasła. Usługa Key Vault pomaga uprościć proces zarządzania certyfikatami i pozwala zachować kontrolę nad kluczami, które uzyskują dostęp do tych certyfikatów. Możesz utworzyć certyfikat z podpisem własnym w usłudze Key Vault lub przekazać istniejący zaufany certyfikat, którego już jesteś właścicielem.

Zamiast używać niestandardowego obrazu maszyny wirtualnej, który zawiera certyfikaty pieczone, wstrzykuje certyfikaty do uruchomionej maszyny wirtualnej. Ten proces zapewnia, że podczas wdrażania na serwerze sieci Web zostaną zainstalowane najbardziej aktualne certyfikaty. Jeśli odnowisz lub zamienisz certyfikat, nie musisz też tworzyć nowego niestandardowego obrazu maszyny wirtualnej. Najnowsze certyfikaty są automatycznie wstrzykiwane podczas tworzenia większej liczby maszyn wirtualnych. W trakcie całego procesu certyfikaty nigdy nie opuszczają platformy Azure oraz nie są udostępniane w skrypcie, historii wiersza polecenia ani w szablonie.

Tworzenie usługi Azure Key Vault

Aby można było utworzyć usługę Key Vault i certyfikaty, utwórz grupę zasobów za pomocą polecenia New-AzResourceGroup. Poniższy przykład obejmuje tworzenie grupy zasobów o nazwie myResourceGroupSecureWeb w lokalizacji Wschodnie stany USA:

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

Następnie utwórz usługę Key Vault za pomocą polecenia New-AzKeyVault. Każda usługa Key Vault wymaga unikatowej nazwy i powinna mieć małe litery. Zastąp mykeyvault ciąg własną unikatową nazwą usługi Key Vault w poniższym przykładzie:

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

Generowanie certyfikatu i przechowywanie go w usłudze Key Vault

W przypadku użycia w środowisku produkcyjnym należy zaimportować prawidłowy certyfikat podpisany przez zaufanego dostawcę za pomocą polecenia Import-AzKeyVaultCertificate. W tym samouczku pokazano, jak wygenerować certyfikat z podpisem własnym za pomocą polecenia Add-AzKeyVaultCertificate , który używa domyślnych zasad certyfikatów z polecenia 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 

Tworzenie maszyny wirtualnej

Ustaw nazwę użytkownika i hasło administratora maszyny wirtualnej przy użyciu polecenia Get-Credential:

$cred = Get-Credential

Następnie utwórz maszynę wirtualną za pomocą polecenia New-AzVM. W poniższym przykładzie zostanie utworzona maszyna wirtualna o nazwie myVM w lokalizacji EastUS. Jeśli jeszcze nie istnieją, zostaną utworzone pomocnicze zasoby sieciowe. To polecenie cmdlet otwiera również port 443 w celu obsługi bezpiecznego ruchu internetowego.

# 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"}'

Utworzenie maszyny wirtualnej może potrwać kilka minut. W ostatnim kroku niestandardowe rozszerzenie skryptu platformy Azure jest używane w celu zainstalowania internetowego serwera usług IIS przy użyciu polecenia Set-AzVmExtension.

Dodawanie certyfikatu do maszyny wirtualnej z poziomu usługi Key Vault

Aby dodać certyfikat z usługi Key Vault do maszyny wirtualnej, uzyskaj identyfikator certyfikatu za pomocą polecenia Get-AzKeyVaultSecret. Dodaj certyfikat do maszyny wirtualnej przy użyciu polecenia 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

Konfigurowanie usług IIS do korzystania z certyfikatu

Użyj ponownie niestandardowego rozszerzenia skryptu z poleceniem Set-AzVMExtension, aby zaktualizować konfigurację usług IIS. Ta aktualizacja dotyczy certyfikatu dodanego z usługi Key Vault do usług IIS i konfiguruje powiązanie internetowe:

$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

Testowanie bezpiecznej aplikacji internetowej

Uzyskaj publiczny adres IP maszyny wirtualnej za pomocą polecenia Get-AzPublicIPAddress. W poniższym przykładzie uzyskano utworzony wcześniej adres IP myPublicIP:

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

Teraz możesz otworzyć przeglądarkę internetową i wprowadzić ciąg https://<myPublicIP> na pasku adresu. Aby zaakceptować ostrzeżenie o zabezpieczeniach, jeśli używasz certyfikatu z podpisem własnym, wybierz pozycję Szczegóły, a następnie pozycję Przejdź do strony internetowej:

Zrzut ekranu przedstawiający ostrzeżenie o zabezpieczeniach przeglądarki internetowej.

Zostanie wyświetlona zabezpieczona witryna internetowa usług IIS, tak jak w poniższym przykładzie:

Zrzut ekranu przeglądarki przedstawiający bezpieczną witrynę usług IIS.

Następne kroki

W tym samouczku zabezpieczyliśmy serwer internetowy usług IIS przy użyciu certyfikatu TLS przechowywanego w usłudze Azure Key Vault. W tym samouczku omówiono:

  • Tworzenie usługi Azure Key Vault.
  • Generowanie lub przekazywanie certyfikatu do usługi Key Vault.
  • Utwórz maszynę wirtualną i zainstaluj serwer internetowy usług IIS.
  • Wstrzykiwanie certyfikatu do maszyny wirtualnej i konfigurowanie usług IIS za pomocą powiązania TLS.

Aby zapoznać się ze wstępnie utworzonymi przykładami skryptów maszyn wirtualnych, zobacz: