Sortie de LibreSSL

 dans Actus, Failles, Linux, OSX, Outils, Sécurité, Serveur
L’article est régulièrement mis à jour (tant que cette popup est présente), la dernière modification date du 01 Septembre 2014 (remplacement OpenSSL par LibreSSL) !

Les personnes qui utilisent UNIX (Linux, BSD, Solaris, OS X) peuvent à présent utiliser la librairie LibreSSL pour remplacer OpenSSL.
LibreSSL est un fork d’OpenSSL qui a été réécrit par la fondation OpenBSD après la découverte de la faille Heartbleed. Il faut savoir que la librairie a complètement été réécrite (il s’agit d’une toute nouvelle version).

L’ensemble du code a été réécrit afin de supporter les systèmes obselètes (Windows 16b, NetWare, DOS, …) mais également de remettre au propre tout ce qui avait été mal pensé comme la gestion de la mémoire (qui a abouti à la faille Heartbleed). Par défaut, la librairie n’était fonctionnel que sous le système OpenBSD, puis la fondation a sortie peu de temps après une version portable qui permet de l’utiliser sur d’autres systèmes tels que OS X, Linux et Solaris.
Il n’existe pas encore de version pour Windows mais c’est une chose qui devrait assez rapidement !

Dans le cas ou le côté développeur vous intéresse, sachez que Bob Beck à mis en ligne une présentation bien détaillée sur les raisons de la création de LibreSSL et des améliorations apportées par rapport à OpenSSL.

INSTALLATION SOUS OSX

Il s’agit d’une version portable, il vous faut donc prendre le fichier sources à cette adresse (clic droit et copier le lien), il s’agit à ce jour de la version 2.0.1.
Pour connaitre la dernière version en date de LibreSSL, vous pouvez lancer cette commande (qui normalement fonctionne pour tout le monde) :

echo -ne "Dernière version : $(wget -q -O - http://ftp.openbsd.org/pub/OpenBSD/LibreSSL/ | egrep -i "libressl-" | awk '{print $5}' | cut -f2 -d\> | cut -f1 -d\< | sed "s%libressl-%%g" | sed "s%.tar.gz%%g" | tail -n1)\n"

Dans la situation présent, l’installation de LibreSSL a été effectuée sur un Mac Mini équipé de Yosemite (10.10) qui me sert pour des tests :

mkdir -p /tmp/{sources,archives} && cd /tmp/archives/
wget http://mirror.internode.on.net/pub/OpenBSD/LibreSSL/libressl-2.0.1.tar.gz
cd /tmp/sources && tar xvzf /tmp/archives/libressl-2.0.1.tar.gz

Une fois que vous avez les sources, il vous suffit d’installer LibreSSL (compilation standard) comme ceci :

./configure
make
make install

Une fois le « make install » effectué, votre librairie LibreSSL sera installée.
Pour OSX, il faut voir que « openssl » a été installé en « /usr/local/bin/openssl », alors que le binaire d’origine est installé en « /opt/local/bin/openssl » (via MacPorts). Il s’agit donc ici de deux versions différentes.

Voici un retour avec le OpenSSL d’origine :

[Djerfy@DJERFY-MMS:/tmp/libressl-2.0.1]-[13/07-12:22] $ /opt/local/bin/openssl version
OpenSSL 1.0.1h 5 Jun 2014

Et voici le retour avec l’autre version (utilisant LibreSSL) :

[Djerfy@DJERFY-MMS:/tmp/libressl-2.0.1]-[13/07-12:20] $ /usr/local/bin/openssl version
LibreSSL 2.0

Lors de cette installation, c’est finalement une bonne chose que les deux versions co-existent, cela permet de spécifier le binaire que l’on souhaite (en modifiant son PATH). Et les librairies utilisées entre les deux binaires « openssl » (n’utiliez pas otool mais ldd sous Linux) :

Avec le openssl :

[Djerfy@DJERFY-MMS:~]-[13/07-14:03] $ otool -L /opt/local/bin/openssl
/opt/local/bin/openssl:
 /opt/local/lib/libssl.1.0.0.dylib (compatibility version 1.0.0, current version 1.0.0)
 /opt/local/lib/libcrypto.1.0.0.dylib (compatibility version 1.0.0, current version 1.0.0)
 /opt/local/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.8)
 /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1197.1.1)

Et avec le LibreSSL :

[Djerfy@DJERFY-MMS:~]-[13/07-14:09] $ otool -L /usr/local/bin/openssl
/usr/local/bin/openssl:
 /usr/local/lib/libcrypto.30.dylib (compatibility version 31.0.0, current version 31.0.0)
 /usr/local/lib/libssl.27.dylib (compatibility version 28.0.0, current version 28.0.0)
 /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1197.1.1)

Je dois encore effectuer des tests avec les différents services comme OpenVPN, Apache/Nginx, et un peu tout ce qui utilisera du SSL.
L’article sera donc prochainement mis à jour (voir la popup).

Edit du 1/09/2014 : pour faire un remplacement complet de OpenSSL par LibreSSL, il vous faudra faire la compilation avec cette ligne « ./configure –prefix=/opt/local/ ». Cela remplacera le service OpenSSL par LibreSSL 🙂

Si vous avez des questions, les commentaires sont à votre disposition.
A bientôt !

Articles recommandés