Jak aktivovat TLSv1.3 na NGINX? VestaCP / CentOS nebo Ubuntu

V tomto tutoriálu se dozvíte jak umožnit TLSv1.3 na NGINX. Co to znamená TLSv 1.3, co to pomáhá a proč potřebuješ na webovém serveru jako TLS lze aktivovat. Pro servery se systémem správy VestaCP (CentOS nebo Ubuntu) je o něco obtížnější aktivovat TLS 1.3 než na serveru cPanel, ale není to nemožné.

Proč je to lepší TLS 1.3 než TLS 1.2?

TLS (Transport Layer Security) je kryptografický protokol která zajišťuje zabezpečení připojení mezi počítačem a sítí, jejíž je součástí. TLS používá se v aplikacích, jako jsou: e-mail, zpráv, hlasové hovory a videohovory (VoIP), ale zejména při HTTPS. Zajištění bezpečné komunikace mezi počítačem nebo chytrým telefonem uživatele a webovým serverem navštívené stránky.

TLS 1.3 nabízí a vyšší rychlost propojení klient – ​​server a Navíc bezpečnost odstraněním některých algoritmů. Rozdíly mezi TLSv1.2 a TLSv1.3.

O HTTPS, SSL (Secure Sockets Layer) Také jsem řekl v jiných článcích:

Jak aktivovat TLS 1.3 na NGINX? Server s VestaCP správou / CentOS

Než uvidíte, jak se aktivujete TLSv1.3 na NGINX, musíte zvážit některé minimální požadavky TLS 1.3.

  1. NGINX 1.13.x nebo novější
  2. Certifikát TLS platný
  3. Aktivní doménové jméno se správně nakonfigurovaným DNS – být přístupné na internetu
  4. Certifikát TLS / SSL platný. Může také být Let’s Encrypt.

Pe VestaCP nainstalováno již dávno, máme k dispozici pouze protokol TLS 1.2. V mnoha tutoriálech jsem viděl, že to stačí jako v nginx.conf přidáme následující řádek pro ca TLS 1.3 k aktivaci:

server {

  listen 443 ssl http2;
  listen [::]:443 ssl http2;

  server_name example.com;
  root /var/www/example.com/public;

  ssl_certificate /path/to/your/certificate.crt;
  ssl_certificate_key /path/to/your/private.key;

  ssl_protocols TLSv1.2 TLSv1.3;

Falešný. Li Server CentOS s vedením VestaCP, NGINX nebyl zkompilován s minimální verzí OpenSSL 1.1.1.1, ssl_protocols TLSv1.2 TLSv1.3; v nginx.conf .. vůbec to nepomáhá.

[root@north ~]# nginx -V
nginx version: nginx/1.22.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) 
built with OpenSSL 1.0.2k-fips  26 Jan 2017
TLS SNI support enabled

Takže ve výše uvedeném příkladu je kompatibilní verze Nginx 1.22.0 TLS 1.3, ale knihovna nám nepomáhá OpenSSL 1.0.2k-fips.

Aktivovat TLSv1.3 na Nginx, musíte nejprve nainstalovat podřízené knihovny a vývojové balíčky. Development Tools. Běží dovnitř CentOS 7 příkazových řádků:

yum install gcc gcc-c++ pcre-devel zlib-devel make unzip gd-devel perl-ExtUtils-Embed libxslt-devel openssl-devel perl-Test-Simple
yum groupinstall 'Development Tools'

1. Nainstalujte nejnovější verzi OpenSSL

V tuto chvíli je nejnovější verze OpenSSL 1.1.1p, ale pokud jsem si všiml, existuje již a OpenSSL 3. Zdroje najdete na OpenSSL.org.

cd /usr/src
wget https://www.openssl.org/source/openssl-1.1.1p.tar.gz
tar xvf openssl-1.1.1p.tar.gz 
mv openssl-1.1.1p openssl
cd openssl
./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl --libdir=/lib64 shared zlib-dynamic
make -j4
make test 
make install 

Velmi důležité běžet make test před instalací knihovny. Pokud test obsahuje chyby, nespouštějte jej make install dokud nebudou chyby opraveny.

V dalším kroku provedeme zálohu aktuálního binárního souboru openssl a přidáme symlink do nového.

mv /usr/bin/openssl /usr/bin/openssl-backup
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl

v /usr/local/openssl/bin vykonat ldd pro kontrolu závislostí openssl. Můžeme také zkontrolovat verzi openssl. Příkaz openssl version.

[root@north bin]# ldd openssl
	linux-vdso.so.1 =>  (0x00007ffd20bd7000)
	libssl.so.1.1 => /lib64/libssl.so.1.1 (0x00007fab09b62000)
	libcrypto.so.1.1 => /lib64/libcrypto.so.1.1 (0x00007fab09675000)
	libdl.so.2 => /lib64/libdl.so.2 (0x00007fab09471000)
	libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fab09255000)
	libc.so.6 => /lib64/libc.so.6 (0x00007fab08e87000)
	/lib64/ld-linux-x86-64.so.2 (0x00007fab09df5000)
[root@north bin]# openssl version
OpenSSL 1.1.1p  21 Jun 2022

Aktuálně máme nainstalovanou nejnovější verzi OpenSSL která vydrží TLSv1.3. Můžeme zkontrolovat verze TLS / SSL podporované knihkupectvími OpenSSL podle objednávky:

[root@north bin]# openssl ciphers -v | awk '{print $2}' | sort | uniq
SSLv3
TLSv1
TLSv1.2
TLSv1.3
[root@north bin]# 

To neznamená, že weby hostované s pomocí správce VestaCP budou mít okamžitě TLS 1.3.

Přestože jsme nainstalovali OpenSSL 1.1.1p, Nginx je zkompilován se starou verzí OpenSSL 1.0.2k-fips.

[root@north bin]# nginx -V
nginx version: nginx/1.22.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) 
built with OpenSSL 1.0.2k-fips  26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie'
[root@north bin]# openssl version
OpenSSL 1.1.1p  21 Jun 2022
[root@north bin]# 

2. Znovu zkompilujte Nginx pro systém VestaCP

V tomto kroku musíme provést rekompilaci pro OpenSSL verze Nginx již nainstalována na systému CentOS / VestaCP. Jak jsem uvedl výše, v mém případě jde o nginx/1.22.0. Protože mluvíme o webovém serveru, který má VestaCP administrační systém, než začneme s rekompilací, je dobré si udělat zálohu konfiguračních souborů nginx.

Zálohujte aktuální Nginx v systému VestaCP

Archivujte a uchovávejte někde na serveru adresáře "/etc/nginx" a "/usr/local/vesta/nginx".

BĚH nginx -V a uložit existující moduly do souboru.

configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie'
Jak aktivujete? TLSv1.3 na NGINX
Jak aktivovat TLSv1.3 na NGINX

Jak překompilovat Nginx pro upgrade OpenSSL / CentOS 7

Opakuji. Pokud máte VestaCP, stáhněte si verzi Nginx, kterou již máte nainstalovanou. Všechny archivy s verzemi Nginx najdete na nginx.org.

cd /usr/src
wget https://nginx.org/download/nginx-1.22.0.tar.gz 
tar xvf nginx-1.22.0.tar.gz
cd nginx-1.22.0

Překompilujeme moduly nginx:

./configure --prefix=/etc/nginx \
--sbin-path=/usr/sbin/nginx \ 
--modules-path=/usr/lib64/nginx/modules \ 
--conf-path=/etc/nginx/nginx.conf \ 
--error-log-path=/var/log/nginx/error.log  \
--http-log-path=/var/log/nginx/access.log  \
--pid-path=/var/run/nginx.pid  \
--lock-path=/var/run/nginx.lock  \
--http-client-body-temp-path=/var/cache/nginx/client_temp  \
--http-proxy-temp-path=/var/cache/nginx/proxy_temp  \
--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp  \
--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp  \
--http-scgi-temp-path=/var/cache/nginx/scgi_temp  \
--user=nginx  \
--group=nginx  \
--with-compat  \
--with-file-aio  \
--with-threads  \
--with-http_addition_module  \
--with-http_auth_request_module  \
--with-http_dav_module  \
--with-http_flv_module  \
--with-http_gunzip_module  \
--with-http_gzip_static_module  \
--with-http_mp4_module  \
--with-http_random_index_module  \
--with-http_realip_module  \
--with-http_secure_link_module  \
--with-http_slice_module  \
--with-http_ssl_module  \
--with-http_stub_status_module  \
--with-http_sub_module  \
--with-http_v2_module  \
--with-mail  \
--with-mail_ssl_module  \
--with-stream  \
--with-stream_realip_module  \
--with-stream_ssl_module  \
--with-stream_ssl_preread_module  \
--with-openssl=/usr/src/openssl  \
--with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong  \
--param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC'  \
--with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie'
make -j4
make install

Nyní máme Nginx nainstalovaný a zkompilovaný s nejnovější verzí OpenSSL schopen odolat TLSv1.3.

[root@north bin]# nginx -V
nginx version: nginx/1.22.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) 
built with OpenSSL 1.1.1p  21 Jun 2022
TLS SNI support enabled

*Pokud již byl nginx na serveru nainstalován, budete jej muset odinstalovat. Kompilace nefunguje při upgradu nginx.

Jak aktivovat TLSv1.3 pro domény na VestaCP?

V souboru /etc/nginx/nginx.conf přidáváme následující řádky:

ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';

Na úrovni domény jsem něco změnil v šablonách VestaCP a povolit HTTP/2. Takže při přidávání nové domény (example.com) s povoleným Let's Encrypt mám následující konfigurační soubor pro SSL:

cat /home/vestacpuser/conf/web/example.com.nginx.ssl.conf 

server {
    listen      IP.IP.IP.IP:443 ssl http2;
    server_name example.com www.example.com;
    root        /home/vestacpuser/web/example.com/public_html;
    index       index.php index.html index.htm;
    access_log  /var/log/nginx/domains/example.com.log combined;
    access_log  /var/log/nginx/domains/example.com.bytes bytes;
    error_log   /var/log/nginx/domains/example.com.error.log error;

    ssl_certificate      /home/vestacpuser/conf/web/ssl.example.com.pem;
    ssl_certificate_key  /home/vestacpuser/conf/web/ssl.example.com.key;

....

ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';

Před restartem nginx je dobré nejprve otestovat jeho konfiguraci.

[root@north web]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@north web]# systemctl restart nginx

Doufám, že vám tento tutoriál pomůže, a pokud se s něčím zaseknete, zanechte podrobnosti o problému v komentářích.

Věnovaný technologiím, s radostí píši na StealthSettings.com od roku 2006. Mám bohaté zkušenosti s operačními systémy: macOS, Windows a Linux, stejně jako s programovacími jazyky a platformami pro blogování (WordPress) a pro online obchody (WooCommerce, Magento, PrestaShop).

jak na to » Linux » Jak aktivovat TLSv1.3 na NGINX? VestaCP / CentOS nebo Ubuntu
Zanechat komentář