V předchozím článku jsem vysvětlil kroky kompilace zdrojového kódu Nginx s OpenSSL 1.1.1 za účelem povolení protokolu TLS 1.3, který byl oficiálně vydán v srpnu 2018. V tomto tutoriálu vám ukážu jednodušší způsob, jak povolit TLS 1.3 na Ubuntu 20.04, 18.04 a 16.04
TLS 1.3 přináší lepší výkon a zabezpečení
Z hlediska výkonu potřebuje TLS 1.2 k navázání připojení HTTPS dvě zpáteční cesty. S TLS 1.3 je vyžadována pouze jedna zpáteční cesta. TLS 1.3 také podporuje režim nulové zpáteční cesty (obnovení relace 0-RTT), což umožňuje klientům, kteří se dříve připojili k vašemu webu, odeslat požadavek HTTP na první zprávu na server. To je velký rozdíl pro uživatele v mobilních sítích nebo na vzdálených místech.
Pokud jde o zabezpečení, TLS 1.3 odstranil podporu pro staré šifrovací sady, které jsou zodpovědné za exploity, jako je útok ROBOT. To je samozřejmě příliš zjednodušené vysvětlení. CloudFlare má dobré podrobné vysvětlení TLS 1.3.
Požadavky na povolení TLS 1.3
Pokud jde o povolení TLS 1.3 s Nginx, existují dva požadavky.
- Vaše verze Nginx musí podporovat TLS 1.3. To znamená Nginx 1.13 nebo vyšší.
- Nginx musí být sestaven s OpenSSL 1.1.1 nebo vyšším.
Ubuntu 18.04 a 20.04 se dodává s OpenSSL 1.1.1
OpenSSL 1.1.1 je součástí úložiště Ubuntu 18.10 a 20.04 a balíček Nginx z úložiště Ubuntu 18.10/20.04 je vytvořen s OpenSSL 1.1.1.
Když Ubuntu 18.04 poprvé vyšlo, přichází pouze s OpenSSL 1.0.2. OpenSSL 1.1.1 je však zpětně portován na Ubuntu 18.04.3.
Pokud stále používáte Ubuntu 18.04.2, jednoduše spusťte následující příkazy pro upgrade na 18.04.3.
aktualizace sudo apt upgrade sudo apt
Nainstalujte nejnovější verzi Nginx vytvořenou s OpenSSL 1.1.1 na Ubuntu 16.04
Balíček Nginx z úložiště Ubuntu 16.04 není vytvořen s OpenSSL 1.1.1. Nginx můžete ručně zkompilovat s OpenSSL 1.1.1, ale zabere to více času a musíte znovu zkompilovat, když vyjde nová verze Nginx. Naštěstí můžeme Nginx nainstalovat z PPA (archív osobních balíčků) Ondřeje Surého, který je vývojářem Debianu a důležitou postavou v komunitě DNS. Spravuje mnoho balíčků pro repozitář Debianu, včetně Apache, BIND, MariaDB, PHP atd. Je také jedním ze správců oficiálního certbota PPA. Takže mám důvěru v jeho PPA a používám ho na svých serverech.
Pokud jste dříve přidali další úložiště Nginx (například nginx.org), vypněte jej. Například mám další úložiště Nginx definované v /etc/apt/sources.list.d/nginx-repo.list
soubor. Jednoduše zakomentuji všechny řádky v tomto souboru, abych jej zakázal.
Chcete-li přidat Ondřej Surý Nginx PPA na Ubuntu, spusťte následující příkaz.
sudo add-apt-repository ppa:ondrej/nginxsudo apt update
Poté odeberte stávající balíček Nginx. (Vaše konfigurační soubory Nginx nebudou odstraněny.)
sudo apt odstranit nginx
Pokud používáte iRedMail a Nginx, spusťte sudo apt remove nginx-full
k odstranění Nginx.
A nainstalujte Nginx z PPA.
sudo apt install nginx
Na dotaz, zda chcete nainstalovat novou verzi konfiguračního souboru, zvolte N
. Váš plugin certbot Nginx může být odstraněn spolu s Nginx, takže jej nainstalujte zpět.
sudo apt install python3-certbot-nginx
Nyní zkontrolujte verzi Nginx.
sudo nginx -V
Měli byste vidět, že Nginx je postaven s OpenSSL 1.1.1.
Verze nginx:nginx/1.14.1 sestavená s OpenSSL 1.1.1 11. září 2018 (běží s OpenSSL 1.1.0g 2. listopadu 2017) Podpora TLS SNI povolena
Tato PPA také poskytuje OpenSSL 1.1.1 pro Ubuntu 16.04. Pokud váš Nginx na Ubuntu 16.04 stále běží s OpenSSL 1.1.0, musíte svůj balíček OpenSSL upgradovat.
upgrade sudo apt
Všimněte si, že pokud používáte výpočetní stroj Google, uvidíte při spuštění výše uvedeného příkazu následující zprávu.
Následující balíčky byly zachovány:libssl1.1 openssl
Je to proto, že balíček OpenSSL 1.1.1 je v konfliktu s některými balíčky výpočetního modulu Google. Pro upgrade OpenSSL budete muset spustit následující příkaz.
sudo apt dist-upgrade
Povolte TLS 1.3 ve virtuálním hostiteli Nginx na Ubuntu 20.04, 18.04 a 16.04
Jakmile budete mít Nginx s OpenSSL 1.1.1, otevřete soubor virtuálního hostitele Nginx.
sudo nano /etc/nginx/conf.d/site.conf
nebo
sudo nano /etc/nginx/sites-enabled/site.conf
Chcete-li povolit TLS 1.3, jednoduše přidejte TLSv1.3
na ssl_protocols
direktiva v bloku serveru SSL.
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
Pokud používáte certifikát Let’s Encrypt, konfiguraci SSL lze nastavit v /etc/letsencrypt/options-ssl-nginx.conf
soubor. Mimochodem, certbot ve výchozím nastavení povoluje TLSv1
, který je nejistý, můžete jej odstranit. Pokud používáte iRedMail a Nginx, musíte upravit konfigurace SSL v /etc/nginx/templates/ssl.tmpl
soubor.
Uložte a zavřete soubor. Poté restartujte Nginx, aby se změna projevila.
sudo systemctl restart nginx
Kontrola verze TLS ve webovém prohlížeči
V prohlížeči Firefox 63 nebo novějším znovu načtěte svou webovou stránku, klikněte pravým tlačítkem na prázdnou oblast a vyberte View Page Info
v kontextovém menu. Přejděte na Security
a uvidíte, že se používá TLS 1.3.
Pomocí prohlížeče Google Chrome 70 nebo vyšší znovu načtěte webovou stránku na svém webu. Poté stiskněte Ctrl+Alt+I
otevřete Nástroje pro vývojáře. Přejděte na Security
a uvidíte, že se používá TLS 1.3.
Používá se TLSv1.3 mezi Cloudflare a vaším Origin serverem?
Ano. Cloudflare podporuje TLS 1.3 na front-end serveru a také používá TLSv1.3 při připojování k vašemu původnímu serveru. Chcete-li zkontrolovat, jakou verzi TLS používáte, můžete vytvořit vlastní formát protokolu v /etc/nginx/nginx.conf
soubor.
sudo nano /etc/nginx/nginx.conf
Přidejte následující text do http
kontextu.
log_format combined_ssl '$remote_addr - $remote_user [$time_local] ' '$ssl_protocol/$ssl_cipher ' '"$request" $status $body_bytes_sent ' '"$http_referer" "$"'_user_agent" "$"'_user_agentUložte a zavřete soubor. Poté přidejte
access_log
direktivu na vašem SSLserver
kontext. Protokol je vcombined_ssl
formát.access_log /var/log/nginx/your-site.access.log combined_ssl;Uložte a zavřete soubor. Poté znovu načtěte Nginx. V souboru protokolu přístupu uvidíte něco jako níže, což znamená, že se používá TLS 1.3.
172.68.132.115 - - [25/Feb/2020:16:07:26 +0800] TLSv1.3/TLS_AES_256_GCM_SHA384 "GET / HTTP/1.1"Další krok
Doufám, že vám tento návod pomohl povolit TLS 1.3 v Nginx na Ubuntu 20.04, Ubuntu 18.04 a Ubuntu 16.04. Můžete také chtít nastavit bránu firewall webové aplikace ModSecurity, abyste chránili svůj web před hackery.
- Jak nastavit ModSecurity s Nginx na Debian/Ubuntu
Jako vždy, pokud vám tento příspěvek přišel užitečný, přihlaste se k odběru našeho bezplatného zpravodaje, kde získáte další tipy a triky. Opatruj se 🙂