Pour chiffrer les communications entre vous et vos utilisateurs finaux, vous achetez un certificat SSL, l’installez sur votre serveur, puis configurez votre site web afin qu’il utilise ce certificat pour protéger ces communications. La connexion SSL débute lorsque le navigateur de l’utilisateur final initie une négociation (« handshake ») avec votre site web.
Au cours de cette négociation, des informations concernant les capacités du navigateur et du serveur sont échangées, des validations sont effectuées et une clé de session répondant aux critères du navigateur et du serveur est créée. Une fois cette clé de session créée, le reste des échanges entre l’utilisateur final et votre site est chiffré et donc sécurisé. Historiquement, la méthode la plus couramment utilisée pour négocier la clé de session reposait sur le cryptosystème à clé publique RSA. Cette approche utilise la clé publique du serveur pour protéger les paramètres de la clé de session créés par le navigateur avant leur envoi au serveur. Le serveur est alors en mesure de déchiffrer cette négociation grâce à sa clé privée correspondante.
Lorsque vous utilisez le mécanisme d’échange de clés RSA, un lien est créé entre la paire de clés du serveur et la clé de session générée pour chaque session sécurisée. Ainsi, si un attaquant parvient un jour à obtenir la clé privée du serveur, il pourra déchiffrer votre session SSL ainsi que toutes les sessions SSL enregistrées.
À l’inverse, lorsque vous activez la confidentialité persistante parfaite (Perfect Forward Secrecy) (PFS), aucun lien n’existe entre la clé privée de votre serveur et chaque clé de session. Si un attaquant obtient un jour l’accès à la clé privée de votre serveur, il ne pourra pas l’utiliser pour déchiffrer les sessions archivées. C’est pour cette raison que l’on parle de confidentialité persistante parfaite « Perfect Forward Secrecy ».
Pour vérifier si votre serveur prend en charge la confidentialité persistante parfaite (Perfect Forward Secrecy), utilisez Discovery pour le tester.
Au lieu d’utiliser la méthode RSA pour l’échange des clés de session, vous devriez utiliser l’échange de clés Elliptic Curve Diffie-Hellman (ECDHE). Notez que vous pouvez toujours utiliser le cryptosystème à clé publique RSA comme algorithme de chiffrement, mais pas comme algorithme d’échange de clés. ECDHE est beaucoup plus rapide que DH (Diffie-Hellman) classique, mais les deux méthodes créent des clés de session auxquelles seules les entités participant à la connexion SSL peuvent accéder. Étant donné que les clés de session ne sont pas liées à la paire de clés du serveur, la clé privée du serveur seule ne peut pas être utilisée pour déchiffrer une session SSL.
Pour activer la confidentialité persistante parfaite (Perfect Forward Secrecy), vous devez:
Réorganiser vos suites de chiffrement afin de placer les suites ECDHE (Elliptic Curve Diffie-Hellman) en tête de liste, suivies des suites DHE (Diffie-Hellman).
Configurer les serveurs pour activer les autres suites de chiffrement n’utilisant pas DH à partir de la liste des suites proposées par le client SSL.
Configuration d’Apache pour la confidentialité persistante parfaite (Perfect Forward Secrecy)
Configuration de Nginx pour la confidentialité persistante parfaite (Perfect Forward Secrecy)
Avant de configurer votre serveur Apache pour la confidentialité persistante parfaite (Perfect Forward Secrecy), votre serveur web et votre bibliothèque SSL/TLS doivent prendre en charge la cryptographie à courbe elliptique (ECC).
Versions minimales requises
OpenSSL 1.0.1c+
Apache 2.4x
Pour configurer Apache pour la confidentialité persistante parfaite (Perfect Forward Secrecy), vous devez configurer le serveur afin qu’il choisisse activement les suites de chiffrement puis activer la chaîne de configuration OpenSSL appropriée.
Localisez la configuration SSL de votre serveur Apache.
Par exemple:
Saisissez la commande suivante:
grep -i -r "SSLEngine" /etc/apache
Dans cet exemple, /etc/apache correspond au répertoire de base de l’installation Apache.
La commande affichera les Virtual Hosts disponibles.
Ouvrez le Virtual Host pour lequel vous souhaitez activer la confidentialité persistante parfaite (Perfect Forward Secrecy).
Ajoutez les lignes suivantes à votre configuration:
SSLProtocol all -SSLv2 -SSLv3
SSLHonorCipherOrder on
Pour SSLCipherSuite, utilisez l’une des configurations suivantes:
Configuration avec RC4
Utilisez cette configuration si vous privilégiez les suites GCM (Galois Counter Mode), résistantes aux attaques temporelles, ainsi que RC4 (résistant à l’attaque BEAST). Pour de meilleures performances, utilisez les suites ECDHE plus rapides lorsque cela est possible.
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"
Configuration sans RC4
Utilisez cette configuration si vous privilégiez les suites GCM (Galois Counter Mode), résistantes aux attaques temporelles, et préférez ne pas utiliser RC4. Pour de meilleures performances, utilisez les suites ECDHE plus rapides lorsque cela est possible.
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 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4"
Configuration avec RC4 en dernier recours pour prendre en charge un large éventail de navigateurs, y compris les plus anciens
Utilisez cette configuration si vous privilégiez les suites GCM (Galois Counter Mode), résistantes aux attaques temporelles, et souhaitez utiliser RC4 uniquement en dernier recours afin de prendre en charge un large éventail de navigateurs et/ou des navigateurs plus anciens. Pour de meilleures performances, utilisez les suites ECDHE plus rapides lorsque cela est possible.
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 +RC4 RC4"
Redémarrez Apache.
Par exemple, saisissez la commande suivante:
apachectl -k restart
Pour vérifier que la confidentialité persistante parfaite (Perfect Forward Secrecy) est activée, utilisez Discovery pour tester votre configuration.
Vous avez configuré Apache avec succès pour la confidentialité persistante parfaite (Perfect Forward Secrecy).
Avant de configurer votre serveur Nginx pour la confidentialité persistante parfaite (Perfect Forward Secrecy), votre serveur web et votre bibliothèque SSL/TLS doivent prendre en charge la cryptographie à courbe elliptique (ECC).
Versions minimales requises
OpenSSL 1.0.1c+
Nginx 1.0.6+ et 1.1.0+
Pour configurer Nginx pour la confidentialité persistante parfaite (Perfect Forward Secrecy), vous devez configurer le serveur afin qu’il choisisse activement les suites de chiffrement puis activer la chaîne de configuration OpenSSL appropriée.
Localisez la configuration SSL sur votre serveur Nginx.
Par exemple:
Saisissez la commande suivante:
grep -r ssl_protocol /etc/nginx
Dans cet exemple, /etc/nginx correspond au répertoire de base de l’installation Nginx.
La commande affichera les blocs serveur (Server Blocks) disponibles.
Ouvrez le bloc serveur pour lequel vous souhaitez activer la confidentialité persistante parfaite (Perfect Forward Secrecy).
Ajoutez les lignes suivantes à votre configuration:
ssl_protocols TLSv1.2 TLSv1.1 TLSv1;
ssl_prefer_server_ciphers on;
Pour ssl_ciphers, utilisez l’une des configurations suivantes:
Configuration avec RC4
Utilisez cette configuration si vous privilégiez les suites GCM (Galois Counter Mode), résistantes aux attaques temporelles, ainsi que RC4 (résistant à BEAST). Pour de meilleures performances, utilisez les suites ECDHE plus rapides lorsque cela est possible.
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";
Configuration sans RC4
Utilisez cette configuration si vous privilégiez les suites GCM (Galois Counter Mode), résistantes aux attaques temporelles, et préférez ne pas utiliser RC4. Pour de meilleures performances, utilisez les suites ECDHE plus rapides lorsque cela est possible.
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 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4";
Configuration avec RC4 en dernier recours pour prendre en charge un large éventail de navigateurs et les navigateurs plus anciens
Utilisez cette configuration si vous privilégiez les suites GCM (Galois Counter Mode), résistantes aux attaques temporelles, et souhaitez utiliser RC4 uniquement en dernier recours afin de prendre en charge un large éventail de navigateurs et/ou des navigateurs plus anciens. Pour de meilleures performances, utilisez les suites ECDHE plus rapides lorsque cela est possible.
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 +RC4 RC4";
Redémarrez Nginx.
Par exemple, saisissez la commande suivante:
sudo service nginx restart
Pour vérifier que la confidentialité persistante parfaite (Perfect Forward Secrecy) est activée, utilisez Discovery pour tester votre configuration.
Vous avez configuré Nginx avec succès pour la confidentialité persistante parfaite (Perfect Forward Secrecy).