Hvordan aktiveres TLSv1.3 på NGINX? VestaCP / CentOS eller Ubuntu

I denne tutorial lærer du hvordan aktivere TLSv1.3 på NGINX. Hvad betyder det TLSv 1.3, hvad hjælper det og hvorfor du mangler på webserveren som TLS kan aktiveres. Til servere med administrationssystem VestaCP (CentOS eller Ubuntu) er lidt sværere at aktivere TLS 1.3 end på en cPanel-server, men det er ikke umuligt.

Hvorfor er det bedre TLS 1.3 end TLS 1.2?

TLS (Transport Layer Security) er en kryptografisk protokol som sikrer forbindelsessikkerhed mellem computeren og et netværk, som den er en del af. TLS det bruges i applikationer som: e-mail, messaging, stemme- og videoopkald (VoIP), men især kl HTTPS. Sikring af sikker kommunikation mellem brugerens computer eller smartphone og webserveren på den tilgåede side.

TLS 1.3 tilbyder en højere hastighed til at forbinde klient-server og en Desuden sikkerhed ved at fjerne nogle algoritmer. Forskellene mellem TLSv1.2 og TLSv1.3.

cirka HTTPS, SSL (Secure Sockets Layer) Jeg sagde også i andre artikler:

Hvordan aktiveres TLS 1.3 på NGINX? Server med VestaCP-styring / CentOS

Før du ser, hvordan du aktiverer TLSv1.3 på NGINX, skal du overveje nogle minimumskrav til TLS 1.3.

  1. NGINX 1.13.x eller nyere
  2. Et certifikat TLS gyldig
  3. Aktivt domænenavn med korrekt konfigureret DNS – være tilgængelig på internettet
  4. Et certifikat TLS / SSL gyldig. Det kan det også være Let’s Encrypt.

Pe VestaCP installeret for længe siden, har vi kun protokollen tilgængelig TLS 1.2. Jeg har set i mange tutorials, at det er nok som i nginx.conf lad os tilføje følgende linje for ca TLS 1.3, der skal aktiveres:

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;

Falsk. Hvis server CentOS med ledelsen VestaCP, NGINX er ikke blevet kompileret med minimumsversionen OpenSSL 1.1.1.1, ssl_protocols TLSv1.2 TLSv1.3; în nginx.conf .. det hjælper overhovedet ikke.

[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

Så i ovenstående eksempel er Nginx 1.22.0 kompatibel version TLS 1.3, men biblioteket hjælper os ikke OpenSSL 1.0.2k-fips.

For at aktivere TLSv1.3 på Nginx, skal du først installere børnebibliotekerne og udviklingspakkerne. Development Tools. Den løber ind CentOS 7 kommandolinjer:

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. Installer den seneste version OpenSSL

På dette tidspunkt er den seneste version OpenSSL 1.1.1p, men så vidt jeg har bemærket er der allerede og OpenSSL 3. Du kan finde kilderne på OpenSSLorg..

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 

Meget vigtigt at løbe make test før du installerer biblioteket. Hvis testen har fejl, skal du ikke køre make install indtil fejlene er rettet.

I næste trin laver vi en sikkerhedskopi af den aktuelle binære fil openssl og vi tilføjer symlink til den nye.

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

i /usr/local/openssl/bin udføre ldd at kontrollere afhængigheder openssl. Vi kan eventuelt også tjekke versionen af openssl. Kommando 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

Vi har i øjeblikket den nyeste version installeret OpenSSL som holder ud TLSv1.3. Vi kan tjekke versionerne TLS / SSL støttet af boghandlere OpenSSL efter ordre:

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

Dette betyder ikke, at websteder hostes med hjælp fra administratoren VestaCP de vil have med det samme TLS 1.3.

Selvom vi har installeret OpenSSL 1.1.1p, Nginx er kompileret med den gamle version 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. Genkompiler Nginx til systemet VestaCP

I dette trin skal vi omkompilere til OpenSSL version af Nginx allerede installeret på systemet CentOS / VestaCP. Som jeg sagde ovenfor, handler det i mit tilfælde om nginx/1.22.0. Da vi taler om en webserver, der har VestaCP administrationssystem, før vi begynder at kompilere igen, er det godt at lave en sikkerhedskopi af nginx-konfigurationsfilerne.

Sikkerhedskopier Nginx-aktuel på systemet VestaCP

Arkivér og gem mapperne et sted på serveren "/etc/nginx"og"/usr/local/vesta/nginx".

LØB nginx -V og gemme eksisterende moduler til en fil.

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'
Hvordan aktiverer du? TLSv1.3 på NGINX
Sådan aktiveres TLSv1.3 på NGINX

Sådan genkompileres Nginx til opgradering OpenSSL / CentOS 7

Jeg gentager. Hvis du har VestaCP, download den version af Nginx, du allerede har installeret. Du kan finde alle arkiver med Nginx-versioner på 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

Vi genkompilerer nginx-modulerne:

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

Vi har nu Nginx installeret og kompileret med den seneste version af OpenSSL i stand til at modstå 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

*hvis nginx allerede var installeret på serveren, skal du afinstallere det. Kompiler virker ikke på nginx-opgradering.

Hvordan aktiveres TLSv1.3 for domæner på VestaCP?

I filen /etc/nginx/nginx.conf vi tilføjer følgende linjer:

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å domæneniveau ændrede jeg noget i skabelonerne VestaCP og for at aktivere HTTP/2. Så når jeg tilføjer et nyt domæne (example.com) med Let's Encrypt aktiveret, har jeg følgende konfigurationsfil til 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';

Før du genstarter nginx, er det godt at teste dens konfiguration først.

[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

Jeg håber, at du finder denne tutorial nyttig, og hvis du sidder fast med noget, skal du efterlade problemdetaljerne i kommentarerne.

Teknologientusiast, jeg skriver med glæde på StealthSettings.com siden 2006. Jeg har rig erfaring med operativsystemer: macOS, Windows og Linux, samt programmeringssprog og blogplatforme (WordPress) og til onlinebutikker (WooCommerce, Magento, PrestaShop).

Hvordan man » Linux » Hvordan aktiveres TLSv1.3 på NGINX? VestaCP / CentOS eller Ubuntu
Efterlad en kommentar