GNU/Linux >> Tutoriels Linux >  >> Linux

Comment activer la confidentialité de transmission parfaite SSL/TLS dans Apache ou Nginx

Cet article fournit un aperçu de la confidentialité persistante parfaite (PFS) et explique comment l'activer sur les serveurs Web Apache® ou Nginx®.

Qu'est-ce que le PFS ?

PFS protège les données partagées entre le client et le serveur même si la clé privée est compromise. Vous pouvez y parvenir en générant une clé de session pour chaque transaction effectuée.

Pourquoi implémenter PFS sur un site Web ?

Un certificat TLS ou SSL fonctionne en utilisant une clé publique et une clé privée. Lorsque le navigateur Web et le serveur échangent des clés, le système crée une clé de session en utilisant un mécanisme d'échange de clés appelé RSA, où toutes les informations entre le client et le serveur sont cryptées. RSAcrée un lien entre la clé privée du serveur et la clé de session créée pour chaque session sécurisée unique.

La session peut être attaquée par force brute - il s'agit d'une attaque qui injecte au serveur des combinaisons de clés de sécurité jusqu'à ce qu'il trouve la bonne. Même si ce processus peut prendre beaucoup de temps, si la clé privée du serveur est compromise, les attaquants peuvent voir à la fois les données de session et toutes les transactions client.

Comment PFS protège un site Web

PFS permet au serveur de ne pas s'appuyer sur une seule clé de session. Au lieu d'utiliser la même clé de chiffrement chaque fois qu'un utilisateur ou un service établit une connexion, PFS génère une clé de session unique pour chaque connexion.

Activer PFS en utilisant des mécanismes d'échange—Ephemeral Diffie-Hellman (DHE) etElliptic Curve Diffie-Hellman (ECDHE) . Si les attaquants forcent brutalement la clé de session, ils ne peuvent déchiffrer que les informations de cette session et pas des autres.

Exigences pour implémenter PFS dans un serveur Web

Utilisez l'un des outils suivants pour implémenter PFS :

  • OpenSSL 1.0.1c+
  • Apache 2.4 ou
  • Nginx 1.0.6+ et 1.1.0+

Vous pouvez vérifier les versions de ces packages en exécutant les commandes suivantes :

Remarque  :Les résultats peuvent varier à mesure que les fournisseurs publient de nouvelles versions.

[root@rackspace-test ~]$ openssl version
OpenSSL 1.1.1g FIPS  21 Apr 2020

[root@rackspace-test ~]$ httpd -v
Server version: Apache/2.4.37 (centos)
Server built:   Nov  4 2020 03:20:37

Pour les serveurs de systèmes d'exploitation Debian® ou Ubuntu®, la commande est apache2ctl -v .

[root@rackspace-test ~]$ nginx -v
nginx version: nginx/1.14.1

Configuration du protocole SSL

Vérifiez quels sites Web ont implémenté SSL en exécutant les commandes dans les sections suivantes.

Ces exemples implémentent PFS dans un domaine appelé example.com .

Instructions Apache

Il existe deux options pour vérifier quels sites Web disposent d'un certificat SSL :

[root@rackspace-test ~]# grep -ir "SSLEngine" /etc/httpd/
/etc/httpd/conf.d/example.com.conf:     SSLEngine on

Remarque : Le chemin par défaut pour les hôtes virtuels Apache se trouve sous le répertoire /etc/httpd/conf.d/ . Les répertoires peuvent varier selon votre configuration.

Ou, vous pouvez utiliser les commandes httpd -S ou apachectl -S pour CentOS ® ou RedHat® Enterprise Linux ® (RHEL) et apache2ctl -S pour les systèmes d'exploitation Debian ou Ubuntu.

[root@rackspace-test ~]# httpd -S | grep 443
*:443                  is a NameVirtualHost
     port 443 namevhost www.example.com (/etc/httpd/conf.d/example.com.conf:10)

Ajoutez les paramètres suivants à la configuration du vhost avec votre éditeur de texte préféré :

SSLProtocol all -SSLv2 -SSLv3
SSLHonorCipherOrder on
SSLCipherSuite "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS"

Lorsque vous recherchez le mot SSL dans le vhost, la sortie devrait ressembler à ce qui suit après l'implémentation :

[root@rackspace-test ~]# egrep 'SSL' /etc/httpd/conf.d/example.com.conf
     SSLEngine on
     SSLProtocol all -SSLv2 -SSLv3
     SSLHonorCipherOrder on
     SSLCipherSuite "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS"
     SSLCertificateFile       /etc/ssl/certs/2022-example.com.crt
     SSLCertificateKeyFile    /etc/ssl/private/2022-example.com.key

Assurez-vous que la syntaxe est correcte et redémarrez Apache.

[root@rackspace-test ~]# httpd -t
Syntax OK
[root@rackspace-test ~]# apachectl -k restart
Instructions Nginx

Répertoriez les sites Web sur lesquels un certificat SSL est installé :

[root@rackspace-test ~]# egrep -ir 'SSL' /etc/nginx/conf.d/
/etc/nginx/conf.d/example.com.conf:        listen 443 ssl;
/etc/nginx/conf.d/example.com.conf:        ssl_certificate       /etc/ssl/certs/2022-example.com.chained.crt;
/etc/nginx/conf.d/example.com.conf:        ssl_certificate_key   /etc/ssl/private/2022-example.com.key;

Remarque : Le chemin par défaut pour les blocs Nginx se trouve sous le répertoire /etc/nginx/conf.d/ . Les répertoires peuvent varier selon votre configuration.

Ajoutez les paramètres suivants à la configuration du vhost avec votre éditeur de texte préféré :

ssl_protocols TLSv1.2 TLSv1.1 TLSv1;
ssl_prefer_server_ciphers on;
ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS";

Lorsque vous recherchez le mot SSL dans le vhost, la sortie devrait ressembler à ce qui suit après l'implémentation :

[root@racksapce-test ~]# egrep -ir 'SSL' /etc/nginx/conf.d/example.com.conf
     listen          443 ssl;
     ssl_protocols TLSv1.2 TLSv1.1 TLSv1;
     ssl_prefer_server_ciphers on;
     ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS";
     ssl_certificate         /etc/ssl/certs/2022-example.com.chained.crt;
     ssl_certificate_key     /etc/ssl/private/2022-example.com.key;

Assurez-vous que la syntaxe est correcte et redémarrez Nginx.

[root@rackspace-test ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@rackspace-test ~]# nginx -s reload

En suivant les étapes précédentes, vous pouvez implémenter correctement PFS pour vos sites Web.

Utilisez l'onglet Commentaires pour faire des commentaires ou poser des questions. Vous pouvez également démarrer une conversation avec nous.


Linux
  1. Qu'est-ce que NGINX ? Comment ça marche?

  2. Comment activer HTTP2 dans NGINX

  3. Comment activer la politique HSTS (HTTP Strict Transport Security) dans Nginx et Apache

  4. Comment activer le protocole HTTPS avec Apache 2 sur Ubuntu 20.04

  5. CentOS / RHEL :Comment activer SSL pour Apache

Comment activer TLS 1.3 dans Nginx sur Ubuntu 18.04 et 16.04

Comment activer IPv6 dans Nginx ?

Comment activer la compression GZIP dans Nginx

Comment installer Nginx avec Let's Encrypt TLS/SSL sur Ubuntu 20.04

Comment activer TLS 1.3 sur Apache et Nginx

Comment vérifier la date d'expiration SSL sur Plesk