Comment activer TLSv1.3 sur NGINX. VestaCP pe CentOS avec ouvertSSL

Dans ce tutoriel, nous verrons comment Activer TLSv1.3 sur NGINX, comprenons un peu Qu'est-ce que ça veut dire cette TLS 1.3 ce qui aide et pourquoi nous avons besoin sur le serveur Web en tant que TLS être activé. Comprenons pourquoi sur un serveur avec VestaCP (CentOS ou Ubuntu) est un peu plus difficile activer TLS 1.3 que sur un serveur cPanel. Ou sur un serveur où nous n'avons pas de logiciel de gestion d'hébergement.

Pourquoi est-ce mieux TLS 1.3 que TLS 1.2?

TLS (Transport Layer Security) est protocole cryptographique qui assure sécurité de la connexion entre l'ordinateur et un réseau auquel il appartient. TLS est utilisé dans des applications telles que : message, 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.

TLSv1.3 offres vitesse supérieure client - connexion 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 TLSv1.3 sur NGINX. Serveur avec VestaCP installé sur CentOS

Avant de voir comment nous activons TLSv1.3 sur NGINX, nous devons avoir un minimum d'exigences logicielles et de bibliothèques présentes.

  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é - pour être accessible sur Internet
  4. Une attestation TLS / SSL valide. Cela pourrait aussi être Let's Encrypt.

Sur un VestaCP installé depuis longtemps, nous n'avons que le protocole TLS 1.2. J'ai vu dans de nombreux tutoriels qu'il suffit comme dans nginx.conf ajoutons la ligne suivante car 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 cu VestaCP, NGINX n'a ​​pas été compilé avec la version minimale d'OpenSSL 1.1.1.1 ssl_protocols TLSv1.2 TLSv1.3; in nginx.conf ça ne nous 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

Par conséquent, dans l'exemple ci-dessus, Nginx 1.22.0 est compatible avec TLSv1.3, mais la librairie Open ne nous aide pasSSL 1.0.2k-fips.

Activer TLSv1.3 sur Nginx, nous devons d'abord installer les bibliothèques enfants et les packages de développement. Outils de développement. Nous courons sur 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 ouverteSSL 1.1.1p, mais d'après ce que j'ai remarqué, il y a déjà OpenSSL 3. Vous pouvez trouver les sources sur OuvrezSSL. 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 des erreurs se sont produites pendant le test, n'exécutez pas make install jusqu'à ce que les erreurs soient corrigées.

Dans l'étape suivante, nous sauvegardons le fichier binaire ouvert actuelssl et nous ajoutons un lien symbolique au nouveau.

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

In /usr/local/openssl/bin exécuter ldd pour vérifier les dépendances ouvertesssl. Nous pouvons également vérifier la version ouvertessl. 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 d'Open installéeSSL porteur TLSv1.3. Nous pouvons vérifier les versions TLS / SSL pris en charge par les bibliothèques ouvertesSSL 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 sont hébergés sur VestaCP ils auront tout de suite TLS 1.3. ni macar Nginx n'est pas encore compilé pour la nouvelle version d'OpenSSL.

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. Recompilez Nginx sur VestaCP

Dans cette étape, nous devons recompiler pour OpenSSL la version de Nginx déjà installée pe CentOS / VestaCP. Comme je l'ai dit plus haut, dans mon cas il s'agit de nginx/1.22.0. S'agissant d'un serveur Web qui a VestaCP comme un système de adminAvant de lancer la recompilation, il est bon de sauvegarder les fichiers de configuration nginx.

Sauvegarde Nginx actuelle sur VestaCP

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

réalisé 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

Nous téléchargeons et compilons Nginx

Répéter. Si tu as VestaCP, téléchargez la version de Nginx que vous avez déjà installée. Toutes les archives avec les versions Nginx peuvent être trouvées 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 d'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

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 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 toi restartvous avez nginx, c'est bien avant de tester 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 ne réussissez pas quelque chose, laissez les détails du problème dans les commentaires.

Stealth

Passionné de technologie, j'aime tester et écrire des tutoriels sur les systèmes d'exploitation macOS, Linux, Windows, à propos de WordPress, WooCommerce et configurer les serveurs web LEMP (Linux, NGINX, MySQL et PHP). j'écris sur StealthSettings.com depuis 2006, et quelques années plus tard, j'ai commencé à écrire sur des tutoriels iHowTo.Tips et des actualités sur les appareils de l'écosystème Apple: iPhone, iPad, Apple Montre, HomePod, iMac, MacBook, AirPods et accessoires.

Laissez un commentaire

Votre adresse email n'apparaitra pas.

Articles Relatifs

/ / /
Mots clés: / / / / / /
Retour à bouton en haut