Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för: ✔️ Virtuella Linux-datorer
För att skydda webbservrar, TLS (Transport Layer Security), tidigare kallat Secure Sockets Layer (SSL), kan certifikat användas för att kryptera webbtrafik. Dessa TLS/SSL-certifikat kan lagras i Azure Key Vault och tillåta säkra distributioner av certifikat till virtuella Linux-datorer i Azure. I den här handledningen lär du dig att:
- Skapa ett Azure Key Vault
- Generera eller ladda upp ett certifikat till Key Vault
- Skapa en virtuell dator och installera NGINX-webbservern
- Mata in certifikatet i den virtuella datorn och konfigurera NGINX med en TLS-bindning
I den här självstudien används CLI i Azure Cloud Shell, som ständigt uppdateras till den senaste versionen. Öppna Cloud Shell genom att välja Prova längst upp i alla kodblock.
Om du väljer att installera och använda CLI lokalt, kräver den här handledningen att du kör Azure CLI version 2.0.30 eller senare. Kör az --version
för att hitta versionen. Om du behöver installera eller uppgradera kan du läsa Installera Azure CLI.
Översikt
Azure Key Vault skyddar krypteringsnycklar och hemligheter, som certifikat och lösenord. Key Vault förenklar certifikathanteringen och låter dig behålla kontrollen över nycklar som kommer åt certifikaten. Du kan skapa ett självsignerat certifikat i Key Vault eller ladda upp ett befintligt, betrott certifikat som du redan äger.
I stället för att använda en anpassad VM-avbildning som innehåller inbakade certifikat matar du in certifikat till en virtuell dator som körs. Den här processen garanterar att de mest uppdaterade certifikaten är installerade på en webbserver under distributionen. Om du förnyar eller ersätter ett certifikat behöver du inte heller skapa en ny anpassad VM-avbildning. De senaste certifikaten matas in automatiskt när du skapar fler virtuella datorer. Under hela processen lämnar certifikaten aldrig Azure-plattformen eller exponeras i ett skript, kommandoradshistorik eller en mall.
Skapa ett Azure Key Vault
Innan du kan skapa ett Key Vault och certifikat skapar du en resursgrupp med az group create. I följande exempel skapas en resursgrupp med namnet myResourceGroupSecureWeb på platsen eastus :
az group create --name myResourceGroupSecureWeb --location eastus
Skapa sedan ett Key Vault med az keyvault create och aktivera det för användning när du distribuerar en virtuell dator. Varje Key Vault kräver ett unikt namn och ska vara gemener. Ersätt <mykeyvault> i följande exempel med ditt eget unika Key Vault-namn:
keyvault_name=<mykeyvault>
az keyvault create \
--resource-group myResourceGroupSecureWeb \
--name $keyvault_name \
--enabled-for-deployment
Generera ett certifikat och lagra i Key Vault
För produktionsanvändning bör du importera ett giltigt certifikat som signerats av en betrodd provider med az keyvault-certifikatimport. I den här självstudien visar följande exempel hur du kan generera ett självsignerat certifikat med az keyvault certificate create som använder standardprincipen för certifikat:
az keyvault certificate create \
--vault-name $keyvault_name \
--name mycert \
--policy "$(az keyvault certificate get-default-policy)"
Förbereda ett certifikat för användning med en virtuell dator
Om du vill använda certifikatet under processen för att skapa den virtuella datorn hämtar du ID:t för certifikatet med az keyvault secret list-versions. Konvertera certifikatet med az vm secret format. Följande exempel tilldelar kommandonas resultat till variabler, vilket gör dem enklare att använda i nästa steg:
secret=$(az keyvault secret list-versions \
--vault-name $keyvault_name \
--name mycert \
--query "[?attributes.enabled].id" --output tsv)
vm_secret=$(az vm secret format --secrets "$secret" -g myResourceGroupSecureWeb --keyvault $keyvault_name)
Skapa en cloud-init-konfiguration för att skydda NGINX
Cloud-init är en metod som används ofta för att anpassa en virtuell Linux-dator när den startas för första gången. Du kan använda cloud-init till att installera paket och skriva filer eller för att konfigurera användare och säkerhet. Eftersom cloud-init körs under den inledande startprocessen finns det inga extra steg eller nödvändiga agenter för att tillämpa konfigurationen.
När du skapar en virtuell dator lagras certifikat och nycklar i den skyddade katalogen /var/lib/waagent/ . Om du vill automatisera tillägg av certifikatet till den virtuella datorn och konfigurera webbservern använder du cloud-init. I det här exemplet installerar och konfigurerar du NGINX-webbservern. Du kan använda samma process för att installera och konfigurera Apache.
Skapa en fil med namnet cloud-init-web-server.txt och klistra in följande konfiguration:
#cloud-config
package_upgrade: true
packages:
- nginx
write_files:
- owner: www-data:www-data
- path: /etc/nginx/sites-available/default
content: |
server {
listen 443 ssl;
ssl_certificate /etc/nginx/ssl/mycert.cert;
ssl_certificate_key /etc/nginx/ssl/mycert.prv;
}
runcmd:
- secretsname=$(find /var/lib/waagent/ -name "*.prv" | cut -c -57)
- mkdir /etc/nginx/ssl
- cp $secretsname.crt /etc/nginx/ssl/mycert.cert
- cp $secretsname.prv /etc/nginx/ssl/mycert.prv
- service nginx restart
Skapa en säker virtuell dator
Skapa nu en virtuell dator med az vm create. Certifikatdata matas in från Key Vault med parametern --secrets
. Du skickar in cloud-init-konfigurationen med parametern --custom-data
:
az vm create \
--resource-group myResourceGroupSecureWeb \
--name myVM \
--image Ubuntu2204 \
--admin-username azureuser \
--generate-ssh-keys \
--custom-data cloud-init-web-server.txt \
--secrets "$vm_secret"
Det tar några minuter innan den virtuella datorn skapas, paketen som ska installeras och appen startas. När den virtuella datorn har skapats noterar du det publicIpAddress
som visas av Azure CLI. Den här adressen används för att komma åt din webbplats i en webbläsare.
Om du vill tillåta säker webbtrafik att nå den virtuella datorn öppnar du port 443 från Internet med az vm open-port:
az vm open-port \
--resource-group myResourceGroupSecureWeb \
--name myVM \
--port 443
Testa den säkra webbappen
Nu kan du öppna en webbläsare och ange https://< publicIpAddress> i adressfältet. Ange din egen offentliga IP-adress från processen för att skapa den virtuella datorn. Godkänn säkerhetsvarningen om du använde ett självsignerat certifikat:
Din skyddade NGINX-webbplats visas sedan som i följande exempel:
Nästa steg
I den här självstudien har du skyddat en NGINX-webbserver med ett TLS/SSL-certifikat som lagras i Azure Key Vault. Du har lärt dig att:
- Skapa ett Azure Key Vault
- Generera eller ladda upp ett certifikat till Key Vault
- Skapa en virtuell dator och installera NGINX-webbservern
- Mata in certifikatet i den virtuella datorn och konfigurera NGINX med en TLS-bindning
Följ den här länken om du vill se färdiga skriptexempel för virtuella datorer.