GNU/Linux >> Znalost Linux >  >> Ubuntu

Jak povolit TLS 1.3 v Nginx na Ubuntu 18.04 a 16.04

HTTPS je právě rychlejší a bezpečnější díky vydání TLS 1.3 od IETF (RFC 8446) v srpnu 2018. TLS 1.3 je nyní nejnovější verzí protokolu TLS. Tento tutoriál vám ukáže, jak povolit TLS 1.3 na webovém serveru Nginx na Ubuntu 18.04 a Ubuntu 16.04.

Aktualizovat :Existuje jednodušší způsob, jak povolit TLS 1.3. Viz tento článek:Jak snadno povolit TLS 1.3 v Nginx na Ubuntu 18.10, 18.04, 16.04, 14.04

TLS 1.3:Vylepšený 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. Správci serveru proto již nemohou přidávat staré šifrovací sady v TLS 1.3, aby uklidnili uživatele starých webových prohlížečů. To je samozřejmě příliš zjednodušené vysvětlení. CloudFlare má dobré podrobné vysvětlení TLS 1.3.

Povolte TLS 1.3 v Nginx na Ubuntu 18.04, Ubuntu 16.04

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 buď sestaven s OpenSSL 1.1.1+, nebo musí běžet s OpenSSL 1.1.1+.

Druhý požadavek může znít matoucí, proto vám uvedu dva příklady.

  • Ubuntu 18.04 se dodává s OpenSSL 1.1.0. Výměna systémové knihovny OpenSSL není dobrý nápad, ale můžete si stáhnout zdrojový kód OpenSSL 1.1.1 a zkompilovat Nginx se zdrojovým kódem OpenSSL 1.1.1, abyste povolili TLS 1.3.
  • Arch Linux se aktuálně dodává s OpenSSL 1.1.1, ale balíček Nginx v úložišti Arch je ve skutečnosti vytvořen s OpenSSL 1.1.0. V tomto případě Nginx není vytvořen s OpenSSL 1.1.1, ale běží s OpenSSL 1.1.1.

Nyní se podívejme, jak zkompilovat Nginx s OpenSSL 1.1.1 na Ubuntu 18.04 a Ubuntu 16.04.

1. Přidání oficiálního úložiště Nginx

Místo stahování zdrojového tarballu a jeho kompilace pomocí make , přidám oficiální úložiště Nginx na svůj server Ubuntu a poté vytvořím deb balíček ze zdrojového kódu. Tímto způsobem nemusím ručně přidávat dlouhý seznam konfiguračních parametrů do configure příkaz. V balíčku deb bude také praktický soubor služby systemd.

Nejprve stáhněte klíč GPG Nginx a importujte jej do Ubuntu.

wget http://nginx.org/keys/nginx_signing.keysudo apt-key add nginx_signing.key

Poté vytvořte soubor se seznamem zdrojů pro repo Nginx.

sudo nano /etc/apt/sources.list.d/nginx.list

Přidejte do souboru následující dva řádky. deb-src linka nám umožňuje stahovat zdrojové balíčky Nginx pomocí apt source příkaz. Bonic je kódové označení pro Ubuntu 18.04. Pokud používáte Ubuntu 16.04, nahraďte jej xenial . (Poznámka:Toto úložiště nepodporuje 32bitový OS.)

deb [arch=amd64] http://nginx.org/packages/mainline/ubuntu/ bionic nginxdeb-src http://nginx.org/packages/mainline/ubuntu/ bionic nginx

Chcete-li uložit soubor v textovém editoru Nano, stiskněte Ctrl+O a poté stiskněte Enter pro potvrzení. Pro ukončení stiskněte Ctrl+X . Potom aktualizujte místní index balíčků.

aktualizace sudo apt

Nyní je na server Ubuntu přidán oficiální repozitář Nginx.

2. Stáhněte si zdrojový kód Nginx a OpenSSL

Vytvoříme nginx adresář pod /usr/local/src/ pro uložení zdrojů Nginx a poté cd do tohoto adresáře.

sudo mkdir /usr/local/src/nginx cd /usr/local/src/nginx/

Stáhněte si zdrojový balíček Nginx pomocí příkazu níže:

sudo apt install dpkg-devsudo apt source nginx

Podívejte se na stažené soubory.

ls

Výstup:

nginx-1.15.3                               nginx_1.15.3-1~bionic.dscnginx_1.15.3-1~bionic.debian.tar.xz   _ 1 z...15tar...> 

Poté naklonujte úložiště github OpenSSL.

cd /usr/local/srcsudo apt install gitsudo git clone https://github.com/openssl/openssl.gitcd openssl

Dále vypište všechny pobočky a přepněte na stabilní větev 1.1.1.

git branch -sudo git checkout OpenSSL_1_1_1-stable

3. Upravit pravidla kompilace Nginx

Upravte soubor s pravidly kompilace Nginx.

sudo nano /usr/local/src/nginx/nginx-1.15.3/debian/rules

Najděte config.status.nginx: config.env.nginx sekce. Přidejte následující text na konec řádku CFLAGS. Všimněte si, že následující text není sám o sobě řádek.

--with-openssl=/usr/local/src/openssl

Uložte a zavřete soubor.

4. Kompilace Nginx

Ujistěte se, že jste ve zdrojovém adresáři Nginx.

cd /usr/local/src/nginx/nginx-1.15.3/

Nainstalujte závislosti a vytvořte náš deb balíček Nginx.

sudo apt build-dep nginx

Nyní použijte následující příkaz k vytvoření balíčku deb.

sudo dpkg-buildpackage -b

Pokud se zobrazí následující chyba,

chybí inicializátor pro pole 'md_ctrl' v 'EVP_MD {aka const struct evp_md_st}

Poté upravte auto/cc/gcc soubor.

sudo nano /usr/local/src/nginx/nginx-1.15.3/auto/cc/gcc

Zakomentujte následující řádek. -Werror flag způsobí, že GCC bude varování považovat za chyby.

CFLAGS="$CFLAGS -Werror"

Poté znovu spusťte příkaz sestavení. Po dokončení sestavení bude v /usr/local/src/nginx/ deb balíček Nginx adresář. Pokud jste již Nginx nainstalovali, je čas odstranit starou verzi a poté nainstalovat novou verzi.

sudo apt remove nginx nginx-common nginx-fullcd /usr/local/src/nginx/sudo dpkg -i nginx_1.15.3-1~bionic_amd64.deb

Nyní začněme Nginx.

sudo systemctl spustit nginx

Pokud se zobrazí následující chybová zpráva.

Nepodařilo se spustit nginx.service:Jednotka nginx.service je maskovaná.

Poté odmaskujte nginx a zadejte znovu příkaz start.

sudo systemctl odmaskovat nginx

Upozorňujeme, že proces Nginx může běžet jako uživatel nginx nebo www-data . Toto lze změnit úpravou prvního řádku v /etc/nginx/nginx.conf soubor. Jen se ujistěte, že Nginx běží jako stejný uživatel s PHP-FPM.

Nyní zkontrolujte konfigurační argumenty Nginx.

sudo nginx -V

Jak můžete vidět, máme nejnovější verzi Nginx postavenou s OpenSSL 1.1.1.

5. Povolte TLS 1.3 v Nginx Server Block

Nyní předpokládám, že jste již povolili HTTPS pro váš blok serveru Nginx. Syntaxe pro povolení TLS 1.3 je poměrně snadná. Otevřete soubor bloku serveru Nginx v /etc/nginx/conf.d/ adresář nebo /etc/nginx/sites-enabled/ adresář. Najděte následující řádek.

ssl_protocols TLSv1.2;

Přidejte TLSv1.3 do seznamu protokolů.

ssl_protocols TLSv1.2 TLSv1.3;

Poté přidejte následující 3 šifrovací sady ke svým stávajícím šifrovacím sadám.

TLS-CHACHA20-POLY1305-SHA256TLS-AES-256-GCM-SHA384TLS-AES-128-GCM-SHA256

takhle:

ssl_ciphers 'TLS-CHACHA20-POLY1305-SHA256:TLS-AES-256-GCM-SHA384:TLS-AES-128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384-ECGADHE -SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-SHASHA256:ECDHEES256ECD -AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';

Uložte a zavřete soubor. Poté otestujte konfiguraci Nginx a znovu načtěte.

sudo nginx -tsudo systemctl znovu načíst nginx

Je nepravděpodobné, že by Ubuntu 18.04 přešlo na OpenSSL 1.1.1, takže pokud upgradujete Nginx pomocí sudo apt upgrade příkaz, TLS 1.3 bude pryč. Je to dobrý nápad zabránit upgradu Nginx pomocí apt pomocí tohoto příkazu:

sudo apt-mark hold nginx

Aktualizace:Od Nginx 1.15.4 můžete povolit 0-RTT s OpenSSL přidáním následující direktivy do kontextu ssl serveru. Výchozí hodnota je nastavena na off . V předchozí verzi 1.15.3 jej lze používat pouze s BoringSSL.

ssl_early_data on

Povolte TLS 1.3 v prohlížeči Google Chrome

V současné době Firefox 62 a Chrome 69 podporují pouze návrh 28 protokolu TLS 1.3. OpenSSL 1.1.1 podporuje konečnou verzi TLS 1.3. Implementace založené na verzi konceptu a konečné verzi RFC spolu vzájemně nespolupracují.

Chcete-li nyní otestovat náš server Nginx, musíme nainstalovat beta verzi prohlížeče Google Chrome a povolit konečnou verzi TLS 1.3. Až si nainstalujete Chrome beta, zadejte chrome://flags/#tls13-variant v adresním řádku a přepněte z default na Enabled (Final) . Poté znovu spusťte Google Chrome, aby se změna projevila.

Nyní navštivte svůj web s povoleným TLS 1.3 v Google Chrome beta a stiskněte Ctrl+Shift+I otevřete stránku nástrojů pro vývojáře. Přejděte na Security tab. Můžete vidět používanou verzi TLS.

Firefox údajně dodává konečnou verzi TLS 1.3 ve Firefoxu 63, která je naplánována na říjen 2018. V Chrome 70 bude finální verze TLS 1.3 povolena pro odchozí připojení.

Aktualizace:Chrome 70 přidal podporu pro konečnou verzi TLS 1.3, ale ve výchozím nastavení stále používá koncept 28 TLS 1.3.

Povolte TLS 1.3 s CloudFlare

Pokud používáte CloudFlare CDN (Content Delivery Network), pak váš web již používá TLS1.3. Na řídicím panelu CloudFlare vyberte crypto a uvidíte možnost povolit/zakázat TLS 1.3. Můžete také povolit 0-RTT. CloudFlare podporuje verzi draft 28 i konečnou verzi.

A je to! Doufám, že vám tento návod pomohl povolit TLS 1.3 v Nginx na Ubuntu 18.04 a Ubuntu 16.04. Opatruj se.


Ubuntu
  1. Jak nainstalovat Nginx s PHP5 a MySQL na Ubuntu 11.10

  2. Jak povolit HTTP/2 v Nginx na Ubuntu a CentOS

  3. Jak povolit a zakázat Wayland na Ubuntu

  1. Jak povolit SSH na Ubuntu 18.04

  2. Jak nainstalovat a nakonfigurovat Nginx na Ubuntu 20.04

  3. Ubuntu 20.04 – Jak povolit Hwe?

  1. Jak povolit a zakázat uživatelský účet root v Ubuntu

  2. Jak povolit SSH na Ubuntu 20.04

  3. Jak nainstalovat a nakonfigurovat Nginx na Ubuntu 18.04 / Debian 9