Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op: ✔️ Virtuele Linux-machines
Om webservers te beveiligen, kan een Transport Layer Security-certificaat (TLS), voorheen bekend als Secure Sockets Layer (SSL), worden gebruikt voor het versleutelen van internetverkeer. Deze TLS/SSL-certificaten kunnen worden opgeslagen in Azure Key Vault en beveiligde implementaties van certificaten aan virtuele Linux-machines (VM's) in Azure toestaan. In deze zelfstudie leert u het volgende:
- Een Azure Key Vault maken
- Een certificaat genereren of uploaden naar de Key Vault
- Een virtuele machine maken en de NGINX-webserver installeren
- Het certificaat invoeren in de virtuele machine en NGINX configureren met een TLS-binding
In deze zelfstudie wordt gebruikgemaakt van de CLI in de Azure Cloud Shell, die voortdurend wordt bijgewerkt naar de nieuwste versie. Als u de Cloud Shell wilt openen, selecteert u Probeer het bovenaan een willekeurig codeblok.
Als u ervoor kiest om de CLI lokaal te installeren en te gebruiken, moet u voor deze zelfstudie versie 2.0.30 of hoger van Azure CLI uitvoeren. Voer az --version uit om de versie te vinden. Als u Azure CLI 2.0 wilt installeren of upgraden, raadpleegt u Azure CLI 2.0 installeren.
Overzicht
Azure Key Vault beschermt cryptografische sleutels en geheimen, zoals certificaten of wachtwoorden. Key Vault helpt het beheerproces voor certificaten te stroomlijnen en zorgt dat u de controle houdt over de sleutels waarmee deze certificaten toegankelijk zijn. U kunt een zelfondertekend certificaat in Key Vault maken of een bestaand, vertrouwd certificaat dat u al bezit uploaden.
In plaats van een aangepaste VM-installatiekopieën te gebruiken die certificaten bevat die zijn ingebouwd, injecteert u certificaten in een actieve VM. Dit proces zorgt ervoor dat de meest recente certificaten tijdens de implementatie op een webserver zijn geïnstalleerd. Als u een certificaat verlengt of vervangt, hoeft u geen nieuwe aangepaste VM-installatiekopieën te maken. De meest recente certificaten worden automatisch geïnjecteerd wanneer u meer VM's maakt. Tijdens het hele proces verlaten de certificaten nooit het Azure-platform of worden ze weergegeven in een script, opdrachtregelgeschiedenis of sjabloon.
Een Azure Key Vault maken
Voordat u een Key Vault en certificaten kunt maken, maakt u een resourcegroep met az group create. In het volgende voorbeeld wordt een resourcegroep met de naam myResourceGroupSecureWeb gemaakt op de locatie eastus :
az group create --name myResourceGroupSecureWeb --location eastus
Maak vervolgens een Key Vault met az keyvault create en schakel deze in voor gebruik wanneer u een VIRTUELE machine implementeert. Elke Sleutelkluis vereist een unieke naam en moet allemaal kleine letters bevatten. Vervang <mykeyvault> in het volgende voorbeeld door uw eigen unieke Key Vault-naam:
keyvault_name=<mykeyvault>
az keyvault create \
--resource-group myResourceGroupSecureWeb \
--name $keyvault_name \
--enabled-for-deployment
Een certificaat genereren en opslaan in Key Vault
Voor productiegebruik moet u een geldig certificaat importeren dat is ondertekend door een vertrouwde provider met az keyvault certificate import. Voor deze zelfstudie ziet u in het volgende voorbeeld hoe u een zelfondertekend certificaat kunt genereren met az keyvault certificate create dat gebruikmaakt van het standaardcertificaatbeleid:
az keyvault certificate create \
--vault-name $keyvault_name \
--name mycert \
--policy "$(az keyvault certificate get-default-policy)"
Een certificaat voorbereiden voor gebruik met een VIRTUELE machine
Als u het certificaat wilt gebruiken tijdens het maken van de VM, haalt u de id van uw certificaat op met az keyvault secret list-versions. Converteer het certificaat met az vm secret format. Het volgende voorbeeld wijst de uitvoer van deze opdrachten toe aan variabelen voor eenvoudig gebruik in de volgende stappen:
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)
Een cloud-init-configuratie maken om NGINX te beveiligen
Cloud-init is een veelgebruikte benadering om een Virtuele Linux-machine aan te passen terwijl deze voor het eerst wordt opgestart. U kunt cloud-init gebruiken voor het installeren van pakketten en schrijven van bestanden, of om gebruikers en beveiliging te configureren. Wanneer cloud-init wordt uitgevoerd tijdens het eerste opstartproces, zijn er geen extra stappen of vereiste agents om uw configuratie toe te passen.
Wanneer u een virtuele machine maakt, worden certificaten en sleutels opgeslagen in de beveiligde map /var/lib/waagent/ . Gebruik cloud-init om het toevoegen van het certificaat aan de VIRTUELE machine en het configureren van de webserver te automatiseren. In dit voorbeeld installeert en configureert u de NGINX-webserver. U kunt hetzelfde proces gebruiken om Apache te installeren en te configureren.
Maak een bestand met de naamcloud-init-web-server.txt en plak de volgende configuratie:
#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
Een beveiligde VM maken
Maak nu een VIRTUELE machine met az vm create. De certificaatgegevens worden vanuit Key Vault geïnjecteerd met de --secrets parameter. U geeft de cloud-init-configuratie door met de --custom-data parameter:
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"
Het duurt enkele minuten voordat de virtuele machine is gemaakt, de pakketten zijn geïnstalleerd en de app wordt gestart. Wanneer de virtuele machine is gemaakt, let u op de publicIpAddress zoals weergegeven door de Azure CLI. Dit adres wordt gebruikt voor toegang tot uw site in een webbrowser.
Open poort 443 vanaf internet met az vm open-port om veilig webverkeer mogelijk te maken bij uw virtuele machine:
az vm open-port \
--resource-group myResourceGroupSecureWeb \
--name myVM \
--port 443
De beveiligde web-app testen
U kunt nu een webbrowser openen en https://< publicIpAddress> invoeren in de adresbalk. Geef uw eigen openbare IP-adres op bij het maken van een virtuele machine. Accepteer de beveiligingswaarschuwing als u een zelfondertekend certificaat hebt gebruikt:
Uw beveiligde NGINX-site wordt vervolgens weergegeven zoals in het volgende voorbeeld:
Volgende stappen
In deze zelfstudie hebt u een NGINX-webserver beveiligd met een TLS/SSL-certificaat dat is opgeslagen in Azure Key Vault. U hebt geleerd hoe u het volgende kunt doen:
- Een Azure Key Vault maken
- Een certificaat genereren of uploaden naar de Key Vault
- Een virtuele machine maken en de NGINX-webserver installeren
- Het certificaat invoeren in de virtuele machine en NGINX configureren met een TLS-binding
Volg deze koppeling om vooraf gemaakte scriptvoorbeelden voor virtuele machines te bekijken.