Partilhar via


Tutorial: Proteger um servidor Web em uma máquina virtual do Windows no Azure com certificados TLS armazenados no Cofre da Chave

Aplica-se a: ✔️ VMs ✔️ do Windows Conjuntos de escala flexíveis

Nota

Atualmente, este doc só funciona para imagens generalizadas. Se você tentar este tutorial usando um disco especializado, você receberá um erro.

Para proteger servidores Web, um certificado TLS (Transport Layer Security) pode ser usado para criptografar o tráfego da Web. Os certificados TLS podem ser armazenados no Cofre de Chaves do Azure e permitir implantações seguras de certificados em máquinas virtuais (VMs) do Windows no Azure. Neste tutorial, ficará a saber como:

  • Crie um Cofre da Chave do Azure.
  • Gere ou carregue um certificado para o Cofre da Chave.
  • Crie uma VM e instale o servidor Web do IIS.
  • Injete o certificado na VM e configure o IIS com uma associação TLS.

Iniciar o Azure Cloud Shell

O Azure Cloud Shell é um shell interativo gratuito que pode utilizar para executar os passos neste artigo. Tem as ferramentas comuns do Azure pré-instaladas e configuradas para utilização com a sua conta.

Para abrir o Cloud Shell, basta selecionar Abrir Cloudshell no canto superior direito de um bloco de código. Também pode iniciar o Cloud Shell num separador do browser separado ao aceder a https://shell.azure.com/powershell. Selecione Copiar para copiar os blocos de código, cole-os no Cloud Shell e pressione enter para executá-los.

Descrição geral

O Azure Key Vault salvaguarda as chaves criptográficas e os segredos, como os certificados ou as palavras-passe. O Key Vault ajuda a simplificar o processo de gestão de chaves e permite-lhe manter o controlo das chaves que acedem a esses certificados. Você pode criar um certificado autoassinado dentro do Cofre da Chave ou carregar um certificado existente e confiável que já possui.

Em vez de usar uma imagem de VM personalizada que inclua certificados incorporados, injete certificados em uma VM em execução. Este processo garante que são instalados os certificados mais atualizados num servidor Web durante a implementação. Se renovar ou substituir um certificado, também não tem de criar uma nova imagem de VM personalizada. Os certificados mais recentes são injetados automaticamente à medida que você cria mais VMs. Durante todo o processo, os certificados nunca saem da plataforma do Azure nem são expostos num script, histórico de linha de comandos ou modelo.

Criar um Azure Key Vault

Antes de criar um Cofre de Chaves e certificados, crie um grupo de recursos com New-AzResourceGroup. O exemplo seguinte cria um grupo de recursos com o nome myResourceGroupSecureWeb na localização E.U.A. Leste:

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

Em seguida, crie um Cofre de Chaves com New-AzKeyVault. Cada Cofre de Chaves requer um nome exclusivo e deve ser todo em minúsculas. Substitua mykeyvault pelo seu próprio nome exclusivo do Cofre da Chave no exemplo a seguir:

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

Gere um certificado e armazene-o no Cofre da Chave

Para uso em produção, você deve importar um certificado válido assinado por um provedor confiável com Import-AzKeyVaultCertificate. Para este tutorial, o exemplo a seguir mostra como você pode gerar um certificado autoassinado com Add-AzKeyVaultCertificate que usa a política de certificado padrão de 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 

Criar uma máquina virtual

Definir um nome de utilizador e palavra-passe de administrador para a VM com Get-Credential:

$cred = Get-Credential

Agora você pode criar a VM com New-AzVM. O exemplo seguinte cria uma VM com o nome myVM na localização EastUS. Se ainda não existirem, os recursos de rede de suporte são criados. Para permitir um tráfego Web seguro, o cmdlet também abre a porta 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"}'

Demora alguns minutos até que a VM seja criada. A última etapa usa a Extensão de Script Personalizado do Azure para instalar o servidor Web do IIS com Set-AzVmExtension.

Adicionar um certificado do Key Vault à VM

Para adicionar o certificado do Cofre da Chave a uma VM, obtenha a ID do seu certificado com Get-AzKeyVaultSecret. Adicione o certificado à VM com 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

Configurar o IIS para utilizar o certificado

Use a extensão de script personalizado novamente com Set-AzVMExtension para atualizar a configuração do IIS. Esta atualização aplica o certificado injetado do Key Vault para o IIS e configura o enlace Web:

$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

Testar a aplicação Web segura

Obtenha o endereço IP público da sua VM com Get-AzPublicIPAddress. O exemplo seguinte obtém o endereço IP para myPublicIP criado anteriormente:

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

Agora, pode abrir um browser e introduzir https://<myPublicIP> na barra de endereço. Para aceitar o aviso de segurança se tiver utilizado um certificado autoassinado, selecione Detalhes e, em seguida Aceda à página Web:

Captura de ecrã do aviso de segurança do navegador da Web.

O site IIS protegido é apresentado como no exemplo seguinte:

Captura de tela do navegador, mostrando o site seguro do IIS.

Próximos passos

Neste tutorial, você protegeu um servidor Web do IIS com um certificado TLS armazenado no Cofre da Chave do Azure. Aprendeu a:

  • Crie um Cofre da Chave do Azure.
  • Gere ou carregue um certificado para o Cofre da Chave.
  • Crie uma VM e instale o servidor Web do IIS.
  • Injete o certificado na VM e configure o IIS com uma associação TLS.

Para obter exemplos de script de máquina virtual pré-criados, consulte: