![]() |
Licence Creative Commons by-nc-nd
(Paternité, pas d'utilisation commerciale, pas de modification) |
OpenSSL est une boite à outils de chiffrement (bibliothèque de cryptographie générale et implémentation du protocole SSL) : Secure Sockets Layer (SSL v2/v3) et Transport Layer Security (TLS v1)
L'API en langage C permet de développer des logiciels qui nécessitent de chiffrer des données et d'authentifier les correspondants en utilisant une architecture PKI (Public Key Infrastrucure). Elle permet de développer rapidement des clients/serveurs.
La documentation livrée présente en quelques lignes le développement d'un client/serveur en C. Si l'on ne doit pas faire un code trop spécifique, le client serveur présenté peut être un bon début pour se familiariser à l'API. Par contre, un développement spécifique est plutôt complexe et nécessite de très bonne connaissances des infrastructures PKI, de la technologies des certificats et du langage C.
Cette bibliothèque est très utilisée pour des fonctions de sécurité par les logiciels réseau tels que : Apache, bind, postfix...
L'API fournit les générateurs de clés publiques/privées dans un format standard avec une signature électronique (ie: SHA1, MD5). Il est possible d'utiliser le protocole SSL ou TLS. Les certificats peuvent être auto-signés (cas du certificat root d'un domaine).
Il est possible de faire fonctionner un client Java (JDK5 minimum) avec un serveur SSL développé avec OPENSSL.
Dans mon laboratoire, développement de clients/serveurs qui chiffrent leurs données sur le réseau.
La documentation est parfois succincte et nécessite de rentrer dans le code de l'API. L'interopérabilité avec Java est assez complexe mais possible.
APACHE, SSH, SFTP
Linux, Win32
Java JDK6
Projet OPENSSL collaboratif
OPENSSL est utilisé dans les serveurs Apache (très largement utilisé sur le WEB)
Parmi les nombreux sites académiques : LAAS/CNRS
http://www.openssl.org/docs/
Network Security with OpenSSL - O'reilly
L'ouvrage OPENSSL édité chez O'reilly est une bonne base de départ, il présente un client/serveur basique.