Kurz: Použití certifikátů TLS/SSL k zabezpečení webového serveru
Platí pro: ✔️ Virtuální počítače s Linuxem
K zabezpečení webových serverů je možné k šifrování webového provozu použít certifikát TLS (Transport Layer Security), dříve označovaný jako SSL (Secure Sockets Layer). Tyto certifikáty TLS/SSL je možné ukládat v Azure Key Vault a umožňují zabezpečená nasazení certifikátů do virtuálních počítačů s Linuxem v Azure. Co se v tomto kurzu naučíte:
- Vytvoření služby Azure Key Vault
- Generování nebo nahrání certifikátu do služby Key Vault
- Vytvoření virtuálního počítače a instalace webového serveru NGINX
- Vložte certifikát do virtuálního počítače a nakonfigurujte NGINX pomocí vazby TLS.
Tento kurz používá rozhraní příkazového řádku v rámci Azure Cloud Shell, které se neustále aktualizuje na nejnovější verzi. Pokud chcete otevřít Cloud Shell, vyberte Vyzkoušet v horní části libovolného bloku kódu.
Pokud se rozhodnete nainstalovat a používat rozhraní příkazového řádku místně, musíte mít Azure CLI verze 2.0.30 nebo novější. Verzi zjistíte spuštěním příkazu az --version
. Pokud potřebujete instalaci nebo upgrade, přečtěte si téma Instalace Azure CLI.
Přehled
Azure Key Vault chrání kryptografické klíče a tajné kódy, jako jsou certifikáty a hesla. Key Vault pomáhá zjednodušit proces správy certifikátů a zajišťuje kontrolu nad klíči, které se používají k přístupu k těmto certifikátům. V rámci služby Key Vault můžete vytvořit certifikát podepsaný svým držitelem nebo nahrát stávající důvěryhodný certifikát, který již vlastníte.
Místo použití vlastní image virtuálního počítače, která zahrnuje integrované certifikáty, vložíte certifikáty do spuštěného virtuálního počítače. Tento proces zajistí, že se při nasazování na webový server nainstalují nejnovější certifikáty. Zároveň pokud obnovíte nebo nahradíte certifikát, nebudete muset vytvářet novou vlastní image virtuálního počítače. Nejnovější certifikáty se automaticky vloží při vytváření dalších virtuálních počítačů. Během celého procesu certifikáty neopustí platformu Azure ani nejsou zveřejněné v žádném skriptu, historii příkazového řádku nebo šabloně.
Vytvoření služby Azure Key Vault
Než vytvoříte službu Key Vault a certifikáty, vytvořte skupinu prostředků pomocí příkazu az group create. Následující příklad vytvoří skupinu prostředků myResourceGroupSecureWeb v umístění eastus:
az group create --name myResourceGroupSecureWeb --location eastus
Dále vytvořte službu Key Vault pomocí příkazu az keyvault create a povolte její použití při nasazování virtuálního počítače. Každá služba Key Vault vyžaduje jedinečný název, který by měl být malými písmeny. V následujícím příkladu nahraďte <mykeyvault> vlastním jedinečným názvem Key Vault:
keyvault_name=<mykeyvault>
az keyvault create \
--resource-group myResourceGroupSecureWeb \
--name $keyvault_name \
--enabled-for-deployment
Vygenerování certifikátu a jeho uložení do služby Key Vault
V případě použití v produkčním prostředí byste měli importovat platný certifikát podepsaný důvěryhodným poskytovatelem pomocí příkazu az keyvault certificate import. Pro účely tohoto kurzu následující příklad ukazuje, jak můžete pomocí příkazu az keyvault certificate create vygenerovat certifikát podepsaný svým držitelem, který využívá výchozí zásady certifikátu:
az keyvault certificate create \
--vault-name $keyvault_name \
--name mycert \
--policy "$(az keyvault certificate get-default-policy)"
Příprava certifikátu pro použití na virtuálním počítači
Pokud chcete certifikát použít během procesu vytváření virtuálního počítače, získejte ID vašeho certifikátu pomocí příkazu az keyvault secret list-versions. Převeďte certifikát pomocí příkazu az vm secret format. Z důvodu snadnějšího použití v dalších krocích přiřadí následující příklad výstup těchto příkazů do proměnných:
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)
Vytvoření konfigurace cloud-init pro zabezpečení serveru NGINX
Cloud-init je široce využívaným přístupem k přizpůsobení virtuálního počítače s Linuxem při jeho prvním spuštění. Pomocí cloud-init můžete instalovat balíčky a zapisovat soubory nebo konfigurovat uživatele a zabezpečení. Vzhledem k tomu, že cloud-init běží během procesu počátečního spuštění, neexistují žádné další kroky ani agenti, kteří by mohli použít konfiguraci.
Při vytváření virtuálního počítače se certifikáty a klíče uloží do chráněného adresáře /var/lib/waagent/. Pokud chcete automatizovat přidávání certifikátů do virtuálního počítače a konfiguraci webového serveru, použijte cloud-init. V tomto příkladu nainstalujete a nakonfigurujete webový server NGINX. Pomocí stejného postupu můžete nainstalovat a nakonfigurovat i Apache.
Vytvořte soubor cloud-init-web-server.txt a vložte do něj následující konfiguraci:
#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
Vytvoření zabezpečeného virtuálního počítače
Teď pomocí příkazu az vm create vytvořte virtuální počítač. Data certifikátu ze služby Key Vault se vloží pomocí parametru --secrets
. Konfiguraci cloud-init předáte pomocí parametru --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"
Vytvoření virtuálního počítače, instalace balíčků a spuštění aplikace trvá několik minut. Po vytvoření virtuálního počítače si poznamenejte hodnotu publicIpAddress
zobrazenou v Azure CLI. Tato adresa slouží k přístupu k vašemu webu ve webovém prohlížeči.
Pokud chcete pro přístup k virtuálnímu počítači povolit zabezpečený webový provoz, otevřete port 443 z internetu pomocí příkazu az vm open-port:
az vm open-port \
--resource-group myResourceGroupSecureWeb \
--name myVM \
--port 443
Testování zabezpečené webové aplikace
Teď můžete otevřít webový prohlížeč a do panelu Adresa zadat https://< publicIpAddress> . Zadejte vlastní veřejnou IP adresu získanou při vytváření virtuálního počítače. Pokud jste použili certifikát podepsaný svým držitelem, přijměte upozornění zabezpečení:
Následně se zobrazí váš zabezpečený web NGINX, jak je znázorněno v následujícím příkladu:
Další kroky
V tomto kurzu jste webový server NGINX zabezpečili certifikátem TLS/SSL uloženým v Azure Key Vault. Naučili jste se:
- Vytvoření služby Azure Key Vault
- Generování nebo nahrání certifikátu do služby Key Vault
- Vytvoření virtuálního počítače a instalace webového serveru NGINX
- Vložte certifikát do virtuálního počítače a nakonfigurujte NGINX pomocí vazby TLS.
Na tomto odkazu najdete předem připravené ukázky skriptů pro virtuální počítače.
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro