KB 2804: Activation des suites de chiffrement DH ou ECDH entre le client et le proxy

Publié le 20 décembre 2023

CONTEXTE

 

Lorsque l’on utilise la fonctionnalité de déchiffrement SSL à travers Olfeo, deux mécanismes de chiffrement sont à distinguer, les échanges entre le client et le proxy, puis entre le proxy et le serveur distant.

Par défaut, Squid utilise l’algorithme RSA pour la communication entre le client et le proxy. Ce mode peut être modifié pour augmenter la sécurité de la chaîne de communication ou pour satisfaire certaines applications refusant d’échanger avec un intermédiaire ne présentant pas de moyens cryptographiques plus mordernes.

 

SUITE DE CHIFFREMENT

Pour vérifier la suite de chiffrement utilisée entre le client et le proxy, rendez-vous simplement sur un site web en passant à travers le proxy olfeo (le déchiffrement doit être activé et le site bien déchiffré). Cliquez ensuite sur le cadenas (ici sur le navigateur firefox) puis sur ‘Plus d’informations’. La partie ‘vérifié par’ devrait indiquer le nom de votre certificat utilisé pour le déchiffrement.

Dans ce cas, la suite de chiffrement utilisée est TLS_RSA_WITH_AES_128_GCM_SHA256.

Cela correspond à la configuration par défaut du proxy Squid utilisée par Olfeo (elle se trouve dans /etc/squid/squid.conf):

http_port 0.0.0.0:3129 ssl-bump options=ALL:SINGLE_DH_USE:NO_SSLv3
tls-cert=/opt/olfeo/data/proxy/ssl/squid3_ca_crt.pem
tls-key=/opt/olfeo/data/proxy/ssl/squid3_ca_key.pem tls-default-ca=on

Nous allons modifier ce paramétrage pour utiliser l’algorithme asymétrique Diffie-Hellmann (DH) et sa variante ECDH (Elliptic Curve Diffie-Hellman). Ces derniers sont des algoritmes a clés publiques tout comme RSA mais sont plus modernes et plus sûrs.

ÉTAPES

1- Générer un fichier de paramètres

 

La première étape pour utiliser les chiffrements moderne DH/ECDH est de créer un fichier DH params. Ceci est nécessaire car générer de bons paramètres pour DH est relativement simple mais long. La librairie OpenSSL que nous utilisons requiert donc sa création à l’avance. De plus cela permet de ne pas utiliser de paramètres prédéfinis pour ne pas s’exposer à la vulnérabilité Logjam.

Lancez la commande suivante et placez le résultat dans le répertoire /opt/olfeo/data/proxy/ssl/:

openssl dhparam -outform PEM -out dhparam.pem 2048

 

2- Modifiez la configuration du proxy

 

Pour modifier la suite de chiffrement par défaut entre le client et le proxy, nous allons devoir modifier un fichier de template. Celui-ci est utilisé comme modèle pour générer la configuration de Squid.

Créez le répertoire suivant et placez le contenu du template à l’intérieur:

mkdir -p /opt/olfeo/etc/sysconfig_templates/squid/
cp /opt/olfeo/lib/sysconfig_templates/squid/http_ports.j2 /opt/olfeo/etc/sysconfig_templates/squid/

Modifiez ensuite le fichier avec un éditeur de texte (par exemple vim.tiny):

vim.tiny /opt/olfeo/etc/sysconfig_templates/squid/http_ports.j2

Rendez-vous à la ligne 4 et modifiez « :SINGLE_DH_USE,NO_SSLv3 » en « :SINGLE_DH_USE:SINGLE_ECDH_USE:NO_SSLv3 »

  1 {% macro bump_options() -%}
  2   {% if has_licence_ssl -%}
  3         ssl-bump
  4         options={{ confsquid.sslproxy_options }}:SINGLE_DH_USE:SINGLE_ECDH_USE:NO_SSLv3
  5         tls-cert=/opt/olfeo/data/proxy/ssl/squid3_ca_crt.pem
  6         tls-key=/opt/olfeo/data/proxy/ssl/squid3_ca_key.pem

Enregistrez ensuite vos changement avec la commande « :wq ».

Rendez-vous ensuite à la ligne 17 et 19 et ajouter l’option tls-dh=prime256v1:/opt/olfeo/data/proxy/ssl/dhparam.pem

 16         {%- if intercept -%}
 17                 https_port {{ port }} intercept {{ bump_options() | oneline }} tls-dh=prime256v1:/opt/olfeo/data/proxy/ssl/dhparam.pem
 18         {%- else -%}
 19                 http_port {{ port }} {{ bump_options() | oneline }} tls-dh=prime256v1:/opt/olfeo/data/proxy/ssl/dhparam.pem
 20         {%- endif %}

Nous utilisons ici la courbe élliptique prime256v1 mais il vous est possible d’en utiliser une autre. Pour lister l’ensemble des courbes supportées par la version d’OpenSSL d’olfeo, tapez:

openssl ecparam -list_curves

Entrez « :wq » pour valider puis générer une nouvelle configuration de Squid avec la commande:

/etc/init.d/sysconfig_v2 restart

Vous pouvez ensuite ouvrir le fichier de configuration de Squid et vérifier qu’il soit bien modifié:

less /etc/squid/squid.conf

http_port 0.0.0.0:3129 ssl-bump options=ALL:SINGLE_DH_USE,SINGLE_ECDH_USE,NO_SSLv3
tls-cert=/opt/olfeo/data/proxy/ssl/squid3_ca_crt.pem tls-key=/opt/olfeo/data/proxy/ssl/squid3_ca_key.pem
tls-default-ca=on tls-dh=/opt/olfeo/data/proxy/ssl/dhparam.pem

Redémarrez ensuite Squid pour prendre en compte le changement:

/etc/init.d/squid restart

 

VALIDATION

Pour valider l’utilisation des algorithmes DH/ECDH, naviguer à travers le proxy, puis affichez les détails de la connexion, comme précédemment.

Le résultat devrait prendre cette forme:

Ces paramètres concernent la communication entre le client et le proxy olfeo. La communication entre l’olfeo et le serveur distant peut être ajustée dans la partie Proxy Avancé -> HTTP -> Options SSL d’olfeo. Vous pouvez notamment ajuster la suite cryptographique utilisée dans la partie Options Avancées.