Comment activer TLSv1.3 sur NGINX ? VestaCP / CentOS ou Ubuntu

Dans ce tutoriel, vous apprendrez comment permettre TLSv1.3 sur NGINX. Qu'est-ce que ça veut dire TLSv 1.3, qu'est-ce que ça aide et pourquoi vous avez besoin sur le serveur Web en tant que TLS peut être activé. Pour les serveurs avec système de gestion VestaCP (CentOS ou Ubuntu) est un peu plus difficile activer TLS 1.3 que sur un serveur cPanel, mais ce n'est pas impossible.

Pourquoi est-ce mieux TLS 1.3 que TLS 1.2?

TLS (Transport Layer Security) est un protocole cryptographique qui assure sécurité de la connexion entre l'ordinateur et un réseau dont il fait partie. TLS il est utilisé dans des applications telles que : email, messagerie, appels vocaux et vidéo (VoIP), mais surtout à HTTPS. Assurer une communication sécurisée entre l'ordinateur ou le smartphone de l'utilisateur et le serveur Web de la page consultée.

TLS 1.3 propose une vitesse plus élevée de connexion client – ​​serveur et un En outre la sécurité en éliminant certains algorithmes. Les différences entre TLSv1.2 et TLSv1.3.

sur HTTPS, SSL (Secure Sockets Layer) J'ai aussi dit dans d'autres articles :

Comment activer TLS 1.3 sur NGINX ? Serveur avec gestion VestaCP / CentOS

Avant de voir comment vous activez TLSv1.3 sur NGINX, vous devez tenir compte de certaines exigences minimales pour TLS 1.3.

  1. NGINX 1.13.x ou version ultérieure
  2. Une attestation TLS Info de contact.
  3. Nom de domaine actif avec DNS correctement configuré – être accessible sur Internet
  4. Une attestation TLS / SSL valide. Il peut aussi être Let’s Encrypt.

Pe VestaCP installé depuis longtemps, nous n'avons que le protocole disponible TLS 1.2. J'ai vu dans de nombreux tutoriels qu'il suffit comme dans nginx.conf ajoutons la ligne suivante pour ca TLS 1.3 à activer :

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;

Faux. Si serveur CentOS avec la direction VestaCP, NGINX n'a ​​pas été compilé avec la version minimale OpenSSL 1.1.1.1, ssl_protocols TLSv1.2 TLSv1.3; în nginx.conf .. ça n'aide pas du tout.

[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

Ainsi, dans l'exemple ci-dessus, Nginx 1.22.0 est une version compatible TLS 1.3, mais la bibliothèque ne nous aide pas OpenSSL 1.0.2k-fips.

Activer TLSv1.3 sur Nginx, vous devez d'abord installer les bibliothèques enfants et les packages de développement. Development Tools. Il tourne dans CentOS 7 lignes de commande :

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. Installez la dernière version OpenSSL

À l'heure actuelle, la dernière version est OpenSSL 1.1.1p, mais d'après ce que j'ai remarqué, il y a déjà et OpenSSL 3. Vous pouvez trouver les sources sur 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 

Très important à courir make test avant d'installer la bibliothèque. Si le test contient des erreurs, ne l'exécutez pas make install jusqu'à ce que les erreurs soient corrigées.

Dans l'étape suivante, nous faisons une sauvegarde du fichier binaire actuel openssl et nous ajoutons symlink au nouveau.

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

Dans /usr/local/openssl/bin exécuter ldd vérifier les dépendances openssl. Nous pouvons éventuellement aussi vérifier la version de openssl. Commande 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

Nous avons actuellement la dernière version installée OpenSSL qui dure TLSv1.3. Nous pouvons vérifier les versions TLS / SSL soutenu par les librairies OpenSSL par ordre:

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

Cela ne signifie pas que les sites Web hébergés avec l'aide du gestionnaire VestaCP ils auront tout de suite TLS 1.3.

Bien que nous ayons installé OpenSSL 1.1.1p, Nginx est compilé avec l'ancienne 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. Recompiler Nginx pour le système VestaCP

Dans cette étape, nous devons recompiler pour OpenSSL version de Nginx déjà installée sur le système CentOS / VestaCP. Comme je l'ai dit plus haut, dans mon cas, il s'agit de nginx/1.22.0. Puisque nous parlons d'un serveur Web qui a VestaCP système d'administration, avant de commencer la recompilation, il est bon de faire une sauvegarde des fichiers de configuration nginx.

Sauvegarder Nginx actuel sur le système VestaCP

Archiver et conserver quelque part sur le serveur les répertoires"/etc/nginx"Et"/usr/local/vesta/nginx" .

COURIR nginx -V et enregistrez les modules existants dans un fichier.

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'
Comment activer ? TLSv1.3 sur NGINX
Comment activer TLSv1.3 sur NGINX

Comment recompiler Nginx pour la mise à jour OpenSSL / CentOS 7

Je répète. Si tu as VestaCP, téléchargez la version de Nginx que vous avez déjà installée. Vous pouvez trouver toutes les archives avec les versions de Nginx sur 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

Nous recompilons les modules 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

Nous avons maintenant Nginx installé et compilé avec la dernière version de OpenSSL capable de supporter 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

*si nginx était déjà installé sur le serveur, vous devrez le désinstaller. La compilation ne fonctionne pas sur la mise à niveau de nginx.

Comment activer TLSv1.3 pour les domaines sur VestaCP ?

Dans le fichier /etc/nginx/nginx.conf nous ajoutons les lignes suivantes :

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

Au niveau du domaine, j'ai changé quelque chose dans les templates VestaCP et pour activer HTTP/2. Ainsi, lors de l'ajout d'un nouveau domaine (example.com) avec Let's Encrypt activé, j'ai le fichier de configuration suivant pour le 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';

Avant de redémarrer nginx, il est bon de tester d'abord sa configuration.

[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

J'espère que vous trouverez ce tutoriel utile et si vous êtes coincé avec quelque chose, laissez les détails du problème dans les commentaires.

Passionné par la technologie, j'écris avec plaisir sur StealthSettings.com depuis 2006. J'ai une expérience approfondie dans les systèmes d'exploitation : macOS, Windows et Linux, ainsi que dans les langages de programmation et les plates-formes de blogging (WordPress) et pour les boutiques en ligne (WooCommerce, Magento, PrestaShop).

Comment » Linux » Comment activer TLSv1.3 sur NGINX ? VestaCP / CentOS ou Ubuntu
Laisser un commentaire