Jak aktivovat TLSv1.3 na NGINX. VestaCP pe CentOS s OtevřítSSL

V tomto tutoriálu uvidíme, jak na to aktivovat TLSv1.3 na NGINX, pojďme si trochu rozumět co to znamená tento TLS 1.3, co pomáhá a proč potřebujeme na webovém serveru jako TLS k aktivaci. Pojďme pochopit, proč na a server s VestaCP (CentOS nebo Ubuntu) je o něco obtížnější aktivovat TLS 1.3 než na serveru cPanel. Nebo na serveru, kde nemáme žádný software pro správu hostingu.

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í, do které patří. TLS se používá v aplikacích, jako jsou: e-mail, zpráv, hlasové hovory a videohovory (VoIP), ale především at 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.

TLSv1.3 nabízí vyšší rychlost spojení 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 TLSv1.3 na NGINX. Server s VestaCP nainstalován na CentOS

Než uvidíme, jak se aktivujeme TLSv1.3 na NGINX, musíme mít k dispozici minimum softwarových požadavků a knihoven.

  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 - aby bylo dostupné na internetu
  4. Certifikát TLS / SSL platný. Může to být také Let's Encrypt.

Na VestaCP nainstalováno již dávno, máme pouze protokol TLS 1.2. V mnoha tutoriálech jsem viděl, že to stačí jako v nginx.conf pojďme přidat následující řádek, protože 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 cu VestaCP, NGINX nebyl zkompilován s minimální verzí OpenSSL 1.1.1.1, ssl_protocols TLSv1.2 TLSv1.3; in nginx.conf vůbec nám 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

Proto je ve výše uvedeném příkladu Nginx 1.22.0 kompatibilní s TLSv1.3, ale knihovna Open nám nepomůžeSSL 1.0.2 XNUMX fips.

Aktivovat TLSv1.3 na Nginx, musíme nejprve nainstalovat dětské knihovny a vývojové balíčky. Vývojové nástroje. Běžíme dál 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 podle toho, co jsem si všiml, je již OpenSSL 3. Zdroje najdete na OTEVŘENOSSL.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 se během testu vyskytly chyby, nespouštějte jej make install dokud nebudou chyby opraveny.

V dalším kroku provedeme zálohu aktuálního otevřeného binárního souborussl a k novému přidáme symbolický odkaz.

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

In /usr/local/openssl/bin vykonat ldd pro kontrolu otevřených závislostíssl. Můžeme také zkontrolovat otevřenou verzissl. 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 podporující TLSv1.3. Můžeme zkontrolovat verze TLS / SSL podporované otevřenými knihovnamiSSL 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 jsou weby hostovány VestaCP budou mít okamžitě TLS 1.3. ani macar Nginx ještě není zkompilován pro novou verzi OpenSSL.

I když máme nainstalovaný OpenSSL 1.1.1p, Nginx je zkompilován se starou otevřenou verzíSSL 1.0.2 XNUMX 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 VestaCP

V tomto kroku musíme znovu zkompilovat pro OpenSSL verze Nginx již nainstalovaná pe CentOS / VestaCP. Jak jsem řekl výše, v mém případě jde o nginx / 1.22.0. Jedná se o webový server, který má VestaCP jako systém adminPřed zahájením rekompilace je dobré zálohovat konfigurační soubory nginx.

Aktuální záloha Nginx zapnuta VestaCP

Archivujte a ukládejte adresáře někde na serveru "/etc/nginx"A"/usr/local/vesta/nginx".

popraven 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 aktivovat TLSv1.3 na NGINX
Jak aktivovat TLSv1.3 na NGINX

Stáhneme a zkompilujeme Nginx

Opakovat. Pokud máte VestaCP, stáhněte si verzi Nginx, kterou již máte nainstalovanou. Všechny archivy s verzemi Nginx lze nalézt 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

Jak aktivovat TLSv1.3 pro domény zapnuté 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 vámi restartmáte nginx, je dobré, že před testováním jeho konfigurace.

[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 bude tento návod užitečný, a pokud se vám něco nedaří, zanechte podrobnosti o problému v komentářích.

Stealth: Vášnivý k technologii, rád testuji a píšu výukové programy o operačních systémech macOS, Linux, Windows, o WordPress, WooCommerce a konfigurace webových serverů LEMP (Linux, NGINX, MySQL a PHP). píšu dál StealthSettings.com od roku 2006 ao několik let později jsem začal psát na iHowTo.Tips výukové programy a novinky o zařízeních v ekosystému Apple: iPhoneiPad Apple Hodinky, HomePod, iMac, MacBook, AirPods a příslušenství.
Nový V