Certifikáty Služby Azure Firewall Premium
Pokud chcete správně nakonfigurovat kontrolu protokolu TLS služby Azure Firewall Premium, musíte zadat platný zprostředkující certifikát certifikační autority a uložit ho do služby Azure Key Vault.
Certifikáty používané službou Azure Firewall Premium
V typickém nasazení se používají tři typy certifikátů:
Certifikát zprostředkující certifikační autority (certifikát certifikační autority)
Certifikační autorita (CA) je organizace, která je důvěryhodná k podepisování digitálních certifikátů. Certifikační autorita ověřuje identitu a oprávněnost společnosti nebo jednotlivce žádajícího o certifikát. Pokud je ověření úspěšné, certifikační autorita vydá podepsaný certifikát. Když server během metody handshake protokolu SSL/TLS předloží certifikát klientovi (například webovému prohlížeči), pokusí se klient ověřit podpis v seznamu známých dobrých podepisujících. Webové prohlížeče obvykle mají seznamy certifikačních autorit, kterým implicitně důvěřují k identifikaci hostitelů. Pokud autorita není v seznamu, stejně jako u některých webů, které podepisují vlastní certifikáty, prohlížeč upozorní uživatele, že certifikát není podepsaný rozpoznanou autoritou, a požádá uživatele, jestli chce pokračovat v komunikaci s neověřeným webem.
Certifikát serveru (certifikát webu)
Certifikát přidružený ke konkrétnímu názvu domény. Pokud má web platný certifikát, znamená to, že certifikační autorita podnikla kroky k ověření, že webová adresa skutečně patří do dané organizace. Když zadáte adresu URL nebo přejdete na odkaz na zabezpečený web, prohlížeč zkontroluje certifikát s následujícími vlastnostmi:
- Adresa webu odpovídá adrese certifikátu.
- Certifikát je podepsaný certifikační autoritou, kterou prohlížeč rozpozná jako důvěryhodnou autoritu.
Občas se uživatelé můžou připojit k serveru s nedůvěryhodným certifikátem. Azure Firewall ukončí připojení, jako by server ukončil připojení.
Kořenový certifikát certifikační autority (kořenový certifikát)
Certifikační autorita může vydat více certifikátů ve formě stromové struktury. Kořenový certifikát je nejvyšší certifikát stromu.
Azure Firewall Premium může zachytit odchozí provoz HTTP/S a automaticky vygenerovat certifikát serveru pro www.website.com
. Tento certifikát se generuje pomocí certifikátu zprostředkující certifikační autority, který zadáte. Prohlížeč koncových uživatelů a klientské aplikace (IaaS, PaaS a další úlohy) musí důvěřovat certifikátu kořenové certifikační autority nebo zprostředkující certifikační autority, aby tento postup fungoval.
Požadavky na certifikát zprostředkující certifikační autority
Ujistěte se, že certifikát certifikační autority splňuje následující požadavky:
Při nasazení jako tajný klíč služby Key Vault musíte použít soubor PFX bez hesla (PKCS12) s certifikátem a privátním klíčem. Certifikáty PEM nejsou podporovány.
Musí to být jeden certifikát a neměl by obsahovat celý řetězec certifikátů.
Musí být platný po dobu jednoho roku dopředu.
Musí se jednat o privátní klíč RSA s minimální velikostí 4096 bajtů.
Musí mít
KeyUsage
rozšíření označené příznakemKeyCertSign
Kritické (RFC 5280; 4.2.1.3 Použití klíče).Musí mít
BasicConstraints
rozšíření označené jako kritické (RFC 5280; 4.2.1.9 Základní omezení).Příznak
CA
musí být nastaven na hodnotu TRUE.Délka cesty musí být větší nebo rovna jedné.
Musí být exportovatelný.
Azure Key Vault
Azure Key Vault je úložiště tajných kódů spravované platformou, které můžete použít k ochraně tajných kódů, klíčů a certifikátů TLS/SSL. Azure Firewall Premium podporuje integraci se službou Key Vault pro certifikáty serveru připojené k zásadám brány firewall.
Konfigurace trezoru klíčů:
- Do trezoru klíčů je potřeba importovat existující certifikát s jeho párem klíčů.
- Případně můžete použít také tajný klíč trezoru klíčů, který je uložený jako soubor PFX bez hesla s kódováním base-64. Soubor PFX je digitální certifikát obsahující privátní klíč i veřejný klíč.
- Doporučujeme použít import certifikátu certifikační autority, protože umožňuje nakonfigurovat upozornění na základě data vypršení platnosti certifikátu.
- Po importu certifikátu nebo tajného kódu je potřeba definovat zásady přístupu v trezoru klíčů, aby identita mohla mít udělený přístup k certifikátu nebo tajnému klíči.
- Poskytnutý certifikát certifikační autority musí být důvěryhodný pro vaši úlohu Azure. Ujistěte se, že jsou správně nasazené.
- Vzhledem k tomu, že služba Azure Firewall Premium je uvedená jako důvěryhodná služba služby Key Vault, umožňuje obejít interní bránu firewall služby Key Vault a eliminovat případné vystavení služby Key Vault na internetu.
Poznámka:
Pokaždé, když importujete nový certifikát certifikační autority brány firewall do služby Azure Key Vault (buď poprvé, nebo nahradíte certifikaci certifikační autority s vypršenou platností), měli byste explicitně aktualizovat nastavení tls služby Azure Firewall Policy novým certifikátem.
Můžete buď vytvořit nebo znovu použít existující spravovanou identitu přiřazenou uživatelem, kterou Azure Firewall používá k načtení certifikátů ze služby Key Vault vaším jménem. Další informace najdete v tématu Co jsou spravované identity pro prostředky Azure?
Poznámka:
Řízení přístupu na základě role v Azure (Azure RBAC) se v současné době nepodporuje pro autorizaci. Místo toho použijte model zásad přístupu. Další informace najdete v tématu Řízení přístupu na základě role v Azure (Azure RBAC) vs. zásady přístupu.
Konfigurace certifikátu v zásadách
Pokud chcete v zásadách brány firewall Premium nakonfigurovat certifikát certifikační autority, vyberte zásadu a pak vyberte kontrolu protokolu TLS. Na stránce kontroly protokolu TLS vyberte Povoleno. Pak vyberte certifikát certifikační autority ve službě Azure Key Vault, jak je znázorněno na následujícím obrázku:
Důležité
Pokud chcete zobrazit a nakonfigurovat certifikát z webu Azure Portal, musíte přidat svůj uživatelský účet Azure do zásad přístupu ke službě Key Vault. Udělte svému uživatelskému účtu získání a výpisu v části Oprávnění k tajným kódům.
Vytvoření vlastního certifikátu certifikační autority podepsaného svým držitelem
Pokud chcete vytvořit vlastní certifikáty, které vám pomůžou otestovat a ověřit kontrolu protokolu TLS, můžete k vytvoření vlastní kořenové certifikační autority a zprostředkující certifikační autority podepsané svým držitelem použít následující skripty.
Důležité
V produkčním prostředí byste měli k vytvoření certifikátu zprostředkující certifikační autority použít podnikovou pkI. Podniková infrastruktura veřejných klíčů využívá stávající infrastrukturu a zpracovává distribuci kořenové certifikační autority do všech počítačů koncových bodů. Další informace najdete v tématu Nasazení a konfigurace certifikátů certifikační autority organizace pro službu Azure Firewall.
Existují dvě verze tohoto skriptu:
- skript Bash
cert.sh
- Skript PowerShellu
cert.ps1
Oba skripty také používají openssl.cnf
konfigurační soubor. Chcete-li použít skripty, zkopírujte obsah openssl.cnf
souboru a cert.sh
nebo cert.ps1
do místního počítače.
Skripty generují následující soubory:
- rootCA.crt/rootCA.key – veřejný certifikát kořenové certifikační autority a privátní klíč.
- interCA.crt/interCA.key – veřejný certifikát zprostředkující certifikační autority a privátní klíč
- interCA.pfx – zprostředkující balíček PKCS12 certifikační autority, který bude používat brána firewall
Důležité
rootCA.key by měly být uloženy v zabezpečeném offline umístění. Skripty generují certifikát s platností 1024 dnů. Skripty vyžadují, aby se na místním počítači nainstalovaly binární soubory openssl. Další informace najdete na webu https://www.openssl.org/.
Po vytvoření certifikátů je nasaďte do následujících umístění:
- rootCA.crt – Nasazení na počítačích koncových bodů (pouze veřejný certifikát).
- interCA.pfx – Importujte jako certifikát ve službě Key Vault a přiřaďte zásady brány firewall.
openssl.cnf
[ req ]
default_bits = 4096
distinguished_name = req_distinguished_name
string_mask = utf8only
default_md = sha512
[ req_distinguished_name ]
countryName = Country Name (2 letter code)
stateOrProvinceName = State or Province Name
localityName = Locality Name
0.organizationName = Organization Name
organizationalUnitName = Organizational Unit Name
commonName = Common Name
emailAddress = Email Address
[ rootCA_ext ]
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer
basicConstraints = critical, CA:true
keyUsage = critical, digitalSignature, cRLSign, keyCertSign
[ interCA_ext ]
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer
basicConstraints = critical, CA:true, pathlen:1
keyUsage = critical, digitalSignature, cRLSign, keyCertSign
[ server_ext ]
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer
basicConstraints = critical, CA:false
keyUsage = critical, digitalSignature
extendedKeyUsage = serverAuth
Skript Bash – cert.sh
#!/bin/bash
# Create root CA
openssl req -x509 -new -nodes -newkey rsa:4096 -keyout rootCA.key -sha256 -days 1024 -out rootCA.crt -subj "/C=US/ST=US/O=Self Signed/CN=Self Signed Root CA" -config openssl.cnf -extensions rootCA_ext
# Create intermediate CA request
openssl req -new -nodes -newkey rsa:4096 -keyout interCA.key -sha256 -out interCA.csr -subj "/C=US/ST=US/O=Self Signed/CN=Self Signed Intermediate CA"
# Sign on the intermediate CA
openssl x509 -req -in interCA.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out interCA.crt -days 1024 -sha256 -extfile openssl.cnf -extensions interCA_ext
# Export the intermediate CA into PFX
openssl pkcs12 -export -out interCA.pfx -inkey interCA.key -in interCA.crt -password "pass:"
echo ""
echo "================"
echo "Successfully generated root and intermediate CA certificates"
echo " - rootCA.crt/rootCA.key - Root CA public certificate and private key"
echo " - interCA.crt/interCA.key - Intermediate CA public certificate and private key"
echo " - interCA.pfx - Intermediate CA pkcs12 package which could be uploaded to Key Vault"
echo "================"
PowerShell – cert.ps1
# Create root CA
openssl req -x509 -new -nodes -newkey rsa:4096 -keyout rootCA.key -sha256 -days 3650 -out rootCA.crt -subj '/C=US/ST=US/O=Self Signed/CN=Self Signed Root CA' -config openssl.cnf -extensions rootCA_ext
# Create intermediate CA request
openssl req -new -nodes -newkey rsa:4096 -keyout interCA.key -sha256 -out interCA.csr -subj '/C=US/ST=US/O=Self Signed/CN=Self Signed Intermediate CA'
# Sign on the intermediate CA
openssl x509 -req -in interCA.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out interCA.crt -days 3650 -sha256 -extfile openssl.cnf -extensions interCA_ext
# Export the intermediate CA into PFX
openssl pkcs12 -export -out interCA.pfx -inkey interCA.key -in interCA.crt -password 'pass:'
Write-Host ""
Write-Host "================"
Write-Host "Successfully generated root and intermediate CA certificates"
Write-Host " - rootCA.crt/rootCA.key - Root CA public certificate and private key"
Write-Host " - interCA.crt/interCA.key - Intermediate CA public certificate and private key"
Write-Host " - interCA.pfx - Intermediate CA pkcs12 package which could be uploaded to Key Vault"
Write-Host "================"
Automatické generování certifikátů
Pro neprodukční nasazení můžete použít mechanismus automatického generování certifikace Azure Firewall Premium, který automaticky vytvoří následující tři prostředky:
- Spravovaná identita
- Key Vault
- Certifikát kořenové certifikační autority podepsaný svým držitelem
Stačí zvolit novou spravovanou identitu a spojí tři prostředky v zásadách Premium a nastaví kontrolu protokolu TLS.
Řešení problému
Pokud je certifikát certifikační autority platný, ale nemůžete získat přístup k plně kvalifikovaným názvům domén nebo adresám URL v rámci kontroly protokolu TLS, zkontrolujte následující položky:
Ujistěte se, že je certifikát webového serveru platný.
Ujistěte se, že je v klientském operačním systému nainstalovaný certifikát kořenové certifikační autority.
Ujistěte se, že prohlížeč nebo klient HTTPS obsahuje platný kořenový certifikát. Firefox a některé jiné prohlížeče můžou mít speciální zásady certifikace.
Ujistěte se, že cílový typ adresy URL v pravidle aplikace pokrývá správnou cestu a všechny další hypertextové odkazy vložené na cílovou stránku HTML. Pro snadné pokrytí celé požadované cesty URL můžete použít zástupné cardy.