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ů se k šifrování webového provozu dá použít certifikát TLS (Transport Layer Security), dříve označovaný jako SSL (Secure Sockets Layer). Tyto certifikáty TLS/SSL se dají ukládat ve službě Azure Key Vault a umožňují zabezpečené nasazení certifikátů do virtuálních počítačů s Linuxem v Azure. V tomto kurzu se 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.
V tomto kurzu se používá rozhraní příkazového řádku v Azure Cloud Shellu, které se neustále aktualizuje na nejnovější verzi. Cloud Shell otevřete tak, že v horní části libovolného bloku kódu vyberete Vyzkoušet .
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. Řetězec <mykeyvault> v následujícím příkladu nahraďte vlastním jedinečným názvem služby 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 počátečního procesu spouštění, nejsou k dispozici žádné další kroky ani požadované agenty pro použití vaší konfigurace.
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 zadat https://< publicIpAddress> na panelu Adresa. 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 zabezpečili webový server NGINX pomocí certifikátu TLS/SSL uloženého ve službě 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.