Kako aktivirati TLSv1.3 na NGINX-u? VestaCP / CentOS ili Ubuntu

U ovom ćete vodiču naučiti kako aktivirati TLSv1.3 na NGINX. Što to znači TLSv 1.3, što pomaže i zašto trebaš na web poslužitelju kao TLS može se aktivirati. Za poslužitelje sa sustavom upravljanja VestaCP (CentOS ili Ubuntu) malo je teže za aktiviranje TLS 1.3 nego na cPanel poslužitelju, ali nije nemoguće.

Zašto je bolje TLS 1.3 nego TLS 1.2?

TLS (Transport Layer Security) je kriptografski protokol koji osigurava sigurnost veze između računala i mreže čiji je dio. TLS koristi se u aplikacijama kao što su: e-mail, Poruke, glasovne i video pozive (VoIP), ali posebno kod HTTPS. Osiguravanje sigurne komunikacije između računala ili pametnog telefona korisnika i web poslužitelja stranice kojoj se pristupa.

TLS 1.3 nudi a veća brzina povezivanja klijent – ​​server i a Štoviše sigurnost eliminacijom nekih algoritama. Razlike između TLSv1.2 i TLSv1.3.

Despre HTTPS, SSL (Secure Sockets Layer) Također sam rekao u drugim člancima:

Kako aktivirati TLS 1.3 na NGINX-u? Poslužitelj s upravljanjem VestaCP / CentOS

Prije nego što vidite kako aktivirate TLSv1.3 na NGINX-u, morate uzeti u obzir neke minimalne zahtjeve TLS 1.3.

  1. NGINX 1.13.x ili noviji
  2. Potvrda TLS važeći
  3. Naziv aktivne domene s pravilno konfiguriranim DNS-om – biti dostupan na internetu
  4. Potvrda TLS / SSL važeći. Također može biti Let’s Encrypt.

Pe VestaCP instaliran davno, imamo samo protokol dostupan TLS 1.2. Vidio sam u mnogim tutorijalima da je dovoljno kao u nginx.conf dodajmo sljedeći redak za ca TLS 1.3 koji se treba aktivirati:

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;

Lažna. Ako server CentOS s upravom VestaCP, NGINX nije kompajliran s minimalnom verzijom OpenSSL 1.1.1.1, ssl_protocols TLSv1.2 TLSv1.3; în nginx.conf .. ništa ne pomaže.

[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

Dakle, u gornjem primjeru Nginx 1.22.0 je kompatibilna verzija TLS 1.3, ali knjižnica nam ne pomaže OpenSSL 1.0.2k-fips.

Za aktiviranje TLSv1.3 na Nginxu, prvo morate instalirati dječje biblioteke i razvojne pakete. Development Tools. Ulazi CentOS 7 naredbenih linija:

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. Instalirajte najnoviju verziju OpenSSL

Trenutno je najnovija verzija OpenSSL 1.1.1p, ali koliko sam primijetio već postoji i OpenSSL 3. Izvore možete pronaći 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 

Vrlo važno trčati make test prije instaliranja knjižnice. Ako test ima pogreške, nemojte ga pokretati make install dok se greške ne isprave.

U sljedećem koraku napravimo sigurnosnu kopiju trenutne binarne datoteke openssl i dodajemo symlink novom.

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

u /usr/local/openssl/bin izvršiti ldd za provjeru ovisnosti openssl. Eventualno možemo provjeriti i verziju openssl. Naredba 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

Trenutno imamo instaliranu najnoviju verziju OpenSSL koja podnosi TLSv1.3. Možemo provjeriti verzije TLS / SSL uz potporu knjižara OpenSSL po redu:

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

To ne znači da web stranice hostiraju uz pomoć upravitelja VestaCP imat će odmah TLS 1.3.

Iako smo instalirali OpenSSL 1.1.1p, Nginx je kompiliran sa starom verzijom 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. Ponovno kompajlirajte Nginx za sustav VestaCP

U ovom koraku moramo ponovno kompajlirati za OpenSSL već instalirana verzija Nginxa na sustavu CentOS / VestaCP. Kao što sam već rekao, u mom slučaju radi se o nginx/1.22.0. Budući da govorimo o web poslužitelju koji ima VestaCP administrativni sustav, prije nego počnemo rekompilirati dobro je napraviti sigurnosnu kopiju nginx konfiguracijskih datoteka.

Sigurnosna kopija trenutnog Nginxa na sustavu VestaCP

Arhivirajte i držite negdje na poslužitelju direktorije "/etc/nginx"i"/usr/local/vesta/nginx".

TRČANJE nginx -V i spremite postojeće module u datoteku.

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'
Kako aktivirati? TLSv1.3 na NGINX
Kako se aktivirati TLSv1.3 na NGINX

Kako ponovno kompajlirati Nginx za nadogradnju OpenSSL / CentOS 7

Ponavljam. Ako imate VestaCP, preuzmite verziju Nginxa koju ste već instalirali. Sve arhive s verzijama Nginxa možete pronaći 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

Ponovno kompajliramo nginx module:

./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

Sada imamo instaliran Nginx i kompajliran s najnovijom verzijom OpenSSL u stanju izdržati 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

*ako je nginx već instaliran na poslužitelju, morat ćete ga deinstalirati. Kompajliranje ne radi na nginx nadogradnji.

Kako aktivirati TLSv1.3 za domene na VestaCP-u?

U dosjeu /etc/nginx/nginx.conf dodajemo sljedeće retke:

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 razini domene promijenio sam nešto u predlošcima VestaCP i omogućiti HTTP/2. Dakle, kada dodajem novu domenu (example.com) s omogućenom funkcijom Let's Encrypt, imam sljedeću konfiguracijsku datoteku za 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';

Prije ponovnog pokretanja nginxa, dobro je prvo testirati njegovu konfiguraciju.

[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

Nadam se da će vam ovaj vodič biti od pomoći, a ako ste zapeli s nečim, ostavite detalje problema u komentarima.

Strastveni zaljubljenik u tehnologiju, s veseljem pišem na StealthSettings.com od 2006. godine. Imam bogato iskustvo s operativnim sustavima: macOS, Windows i Linux, kao i s programskim jezicima i platformama za bloganje (WordPress) i za internetske trgovine (WooCommerce, Magento, PrestaShop).

kako » Linux » Kako aktivirati TLSv1.3 na NGINX-u? VestaCP / CentOS ili Ubuntu
Ostavite komentar