GNU/Linux >> Znalost Linux >  >> Ubuntu

Jak snadno povolit TLS 1.3 v Nginx na Ubuntu 20.04, 18.04, 16.04

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.

  1. Vaše verze Nginx musí podporovat TLS 1.3. To znamená Nginx 1.13 nebo vyšší.
  2. 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_agent 

Uložte a zavřete soubor. Poté přidejte access_log direktivu na vašem SSL server kontext. Protokol je v combined_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 🙂


Ubuntu
  1. Jak povolit SSH na Ubuntu 18.04

  2. Jak povolit vzdálenou plochu Ubuntu

  3. Ubuntu 20.04 – Jak povolit Hwe?

  1. Jak zkontrolovat stav NGINX na Ubuntu

  2. Jak povolit noční osvětlení na Ubuntu 17.10

  3. Jak povolit frakční škálování v Ubuntu 19.04

  1. Jak nainstalovat Nginx na Ubuntu 18.04

  2. Jak nainstalovat Nginx na Ubuntu 16.04

  3. Jak nainstalovat Nginx na Ubuntu 20.04