Openssl
OpenSSL est une boite à outils comprenant deux librairies et une commande permettant de gérer le chiffrement par SSL.
La librairie est utilisée par certaines applications serveurs pour chiffrer leurs connexions.
Cette page traite de la commande openssl(1)
Encoder un fichier ou une chaine de caractère
L'encodage en base64(1) est couramment utilisé pour permettre d'intégrer des fichiers dans un fichier texte, par exemple :
- les pièces jointes sont ainsi intégrés à un message électronique
- on peut intégrer des images dans une page HTML : http://actuel.fr.selfhtml.org/articles/graphisme/inline-images/index.htm
C'est aussi utilisé par votre client mail pour l'authentification SMTP.
Pour encoder un fichier en base64 :
$ openssl base64 < fichier
Pour décoder un fichier encodé en base64 :
$ openssl base64 -d < fichier_encodé
Pour encoder/décoder une chaine de caractère :
$ echo -n "chaine_à_encoder" | openssl base64 $ echo -n "chaine_à_décoder" | openssl base64 -d
Openssl peut ainsi encoder et décoder via d'autres algorithmes : bef, des, rc2, rc4, etc...
Telnet over SSL
Vous pouvez vous connectez à un serveur (web, mail, ftp,...) qui utilise SSL avec s_client(1) :
$ openssl s_client -crlf -connect <adresse_du_serveur>:<port>
(en remplacant <adresse_du_serveur> par l'adresse IP ou DNS du serveur et <port> par son port d'écoute.
Pour un serveur qui utilise STARTTLS :
$ openssl s_client -crlf -starttls <protocol> <adresse_du_serveur>:<port>
(en remplaçant <protocol> par le protocole utilisé : smtp, ftp, pop3 ou imap)
Vous pouvez alors taper des commandes comme si vous étiez connecté à ce serveur via telnet en clair.
Avec s_server(1), vous pouvez faire des simulations d'un serveur qui fait du SSL.
Gestion des certificats
Afficher les informations d'un certificat
$ openssl x509 -text -noout -in <fichier_du_certificat>
Créer un certificat autosigné
Attention, ce type de certificat génèrera un avertissement dans le logiciel client, mais vous permettra d'utiliser SSL si le client l'accepte. C'est génant si vous voulez créer un site d'e-commerce, mais suffisant pour chiffrer les connexions sur un serveur perso.
directement
$ openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout mykey.pem -out mycert.pem
Ceci crééra un certificat autosigné valable un an (365 jours) chiffré en RSA 2048bits dans le fichier mycert.pem, et la clé privée dans mykey.pem.
via sa propre autorité de certification
Vous pouvez aussi vous créer une autorité de certification qui signera tous vos certificats. Deux utilitaires vous permettent de le faire facilement :
- le script CA.pl, fourni avec openssl : http://postfix.traduc.org/index.php/TLS_README.html#quick-start
- l'utilitaire graphique tinyCA : http://irp.nain-t.net/doku.php/270crypt:030_application
Générer une requête de certificat à une autorité de certification extérieure
ToDo