Hoe te activeren TLSv1.3 op NGINX. VestaCP pe CentOS met OpenSSL

In deze tutorial zullen we zien hoe: activeren TLSv1.3 op NGINX, laten we het een beetje begrijpen wat betekent het deze TLS 1.3, wat helpt? en waarom wij hebben nodig op de webserver als TLS geactiveerd worden. Laten we begrijpen waarom op a server met VestaCP (CentOS of Ubuntu) is iets moeilijker activeren TLS 1.3 dan op een cPanel-server. Of op een server waar we geen hostingbeheersoftware hebben.

Waarom is het beter? TLS 1.3 dan TLS 1.2?

TLS (Transport Layer Security) Is een cryptografisch protocol wat zorgt voor verbindingsbeveiliging tussen de computer en een netwerk waartoe het behoort. TLS wordt gebruikt in toepassingen zoals: email, messaging, spraak- en videogesprekken (VoIP), maar vooral bij HTTPS. Zorgen voor een veilige communicatie tussen de computer of smartphone van de gebruiker en de webserver van de bezochte pagina.

TLSv1.3 biedt hogere snelheid client - server verbinding en a Bovendien beveiliging door enkele algoritmen te elimineren. De verschillen tussen TLSv1.2 en TLSv1.3.

over HTTPS, SSL (Secure Sockets Layer) Ik zei ook in andere artikelen:

Hoe te activeren TLSv1.3 op NGINX. Server met VestaCP geïnstalleerd op CentOS

Voordat we zien hoe we activeren TLSv1.3 op NGINX, moeten we een minimum aan softwarevereisten en bibliotheken hebben.

  1. NGINX 1.13.x of hoger
  2. Een certificaat TLS geldig
  3. Actieve domeinnaam met correct geconfigureerde DNS - toegankelijk via internet
  4. Een certificaat TLS / SSL Geldig. Het kan ook Let's Encrypt zijn.

Op een VestaCP lang geleden geïnstalleerd, we hebben alleen het protocol TLS 1.2. Ik heb in veel tutorials gezien dat het genoeg is als in nginx.conf laten we de volgende regel toevoegen omdat TLS 1.3 te activeren:

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;

Nep. Als server CentOS cu VestaCP, NGINX is niet gecompileerd met de minimale versie van OpenSSL 1.1.1.1, ssl_protocols TLSv1.2 TLSv1.3; in nginx.conf het helpt ons helemaal niet.

[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

Daarom is in het bovenstaande voorbeeld Nginx 1.22.0 compatibel met: TLSv1.3, maar de Open bibliotheek helpt ons nietSSL 1.0.2k-fips.

Activeren TLSv1.3 op Nginx, moeten we eerst de kinderbibliotheken en ontwikkelingspakketten installeren. Ontwikkelingshulpmiddelen. We rennen door CentOS 7 opdrachtregels:

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. Installeer de nieuwste Open-versieSSL

Op dit moment is de nieuwste versie OpenSSL 1.1.1p, maar van wat ik heb gemerkt is er al OpenSSL 3. Je vindt de bronnen op OpenenSSL.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 

Heel belangrijk om te rennen make test voordat u de bibliotheek installeert. Als er fouten zijn opgetreden tijdens de test, niet uitvoeren make install totdat de fouten zijn hersteld.

In de volgende stap maken we een back-up van het huidige open binaire bestandssl en we voegen een symbolische link toe aan de nieuwe.

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

In /usr/local/openssl/bin uitvoeren ldd om te controleren op open afhankelijkhedenssl. We kunnen ook de open versie controlerenssl. Opdracht 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

We hebben momenteel de nieuwste versie van Open geïnstalleerdSSL ondersteunende TLSv1.3. We kunnen de versies controleren TLS / SSL ondersteund door Open bibliothekenSSL op bestelling:

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

Dit betekent niet dat websites worden gehost op VestaCP ze zullen onmiddellijk hebben TLS 1.3. geen van beide macar Nginx is nog niet gecompileerd voor de nieuwe versie van OpenSSL.

Hoewel we Open hebben geïnstalleerdSSL 1.1.1p, Nginx is gecompileerd met de oude Open versieSSL 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. Hercompileer Nginx aan VestaCP

In deze stap moeten we opnieuw compileren voor OpenSSL de versie van Nginx al geïnstalleerd pe CentOS / VestaCP. Zoals ik hierboven al zei, in mijn geval gaat het om nginx / 1.22.0. Gaat over een webserver die heeft VestaCP als een systeem van adminVoordat u de hercompilatie start, is het goed om een ​​back-up te maken van de nginx-configuratiebestanden.

Huidige Nginx-back-up aan VestaCP

Archiveer en bewaar mappen ergens op de server "/etc/nginx"En"/usr/local/vesta/nginx'.

uitgevoerd nginx -V en sla de bestaande modules op in een bestand.

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'
Hoe te activeren TLSv1.3 op NGINX
Hoe te activeren TLSv1.3 op NGINX

We downloaden en compileren Nginx

Herhalen. Als je hebt VestaCP, download de versie van Nginx die je al hebt geïnstalleerd. Alle archieven met Nginx-versies zijn te vinden op 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

We compileren de nginx-modules opnieuw:

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

We hebben nu Nginx geïnstalleerd en gecompileerd met de nieuwste versie van OpenSSL in staat om te weerstaan 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

Hoe te activeren TLSv1.3 voor domeinen aan VestaCP

In het / etc / nginx / bestandnginx.conf we voegen de volgende regels toe:

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';

Op domeinniveau heb ik iets gewijzigd in de sjablonen VestaCP en om HTTP / 2 . in te schakelen. Dus bij het toevoegen van een nieuw domein (example.com) met Let's Encrypt ingeschakeld, heb ik het volgende configuratiebestand voor 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';

Voor jou restartje hebt nginx, het is goed dat voordat je de configuratie test.

[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

Ik hoop dat je deze tutorial nuttig vindt, en als je ergens niet in slaagt, laat dan de details van het probleem achter in de comments.

Hoe werkt het? » Linux » Hoe te activeren TLSv1.3 op NGINX. VestaCP pe CentOS met OpenSSL

Gepassioneerd door technologie, test en schrijf ik graag tutorials over besturingssystemen macOS, Linux, Windows, wat betreft WordPress, WooCommerce en configureer LEMP-webservers (Linux, NGINX, MySQL en PHP). ik schrijf verder StealthSettings.com sinds 2006, en een paar jaar later begon ik te schrijven over iHowTo.Tips tutorials en nieuws over apparaten in het ecosysteem Apple: iPhoneiPad, Apple Kijk, HomePod, iMac, MacBook, AirPods en accessoires.

Laat een bericht achter