OpenSSL

OpenSSL est une libraire d'outils écrite en C et sous license Apache License 1.0 et BSD clause 4, contenant les implémentations open-source des protocoles SSL et TLS.

Le projet a été démarré en 1998 dans le but de fournir des outils cryptographiques afin de chiffrer les données et les communications sur Internet.

Aujourd’hui alors qu’OpenSSL sort sa version 1.0.2e, 2/3 des serveurs web mondiaux l’utilisent.

OpenSSL supporte un grand nombre fonctions de hachage et de chiffrement:
Hash:
MD5, MD4, MD2, SHA-1, SHA-2, RIPEMD-160, MDC-2, GOST R 34.11-94
Chiffrements symétrique:
AES, Blowfish, Camellia, SEED, CAST-128, DES, IDEA, RC2, RC4, RC5, 3DES, GOST 28147-89
Chiffrements asymétrique:
RSA, DSA, Diffie–Hellman key exchange, Elliptic curve, GOST R 34.10-2001

Le 7 Avril 2014, une faille majeure a été découverte dans la librairie cryptographique d'OpenSSL, ce qui a rendu une partie des serveurs web vulnerables a la faille Heartbleed, cette faille permet de récuperer les données normalement chiffrées en lisant la mémoire du système sur lequel se trouve OpenSSL.

Checksum

Le checksum est un procédé permettant la vérification de l'intégrité d'un fichier. Lorsque un fichier est téléchargé, généralement un fichier checksum avec un hash en md5 ou sha1 vient avec.

Prenons l'exemple de l'archive de Dokuwiki dokuwiki-2016-06-26a.tgz, le checksum md5 ressemble a ceci

9b9ad79421a1bdad9c133e859140f3f2

Téléchargeons le package et récupérons l'empreinte md5 de ce fichier.

$ wget https://download.dokuwiki.org/src/dokuwiki/dokuwiki-2016-06-26a.tgz
$ openssl md5 dokuwiki-2016-06-26a.tgz
MD5(dokuwiki-2016-06-26a.tgz)= 9b9ad79421a1bdad9c133e859140f3f2

Les hash sont identiques, ce qui veut dire que notre fichier téléchargé n'a pas été altéré lors du téléchargement.

Chiffrement

Chiffrer un fichier

Chiffrement:

$ openssl enc -aes-256-cbc -in file -out cipherfile

Déchiffrement:

$ openssl enc -aes-256-cbc -d -in cipherfile > file

Chiffrer un répértoire

Chiffrement:

$ tar cf /home | openssl enc -aes-256-cbc -out cipherhome.tar

Déchiffrement:

$ openssl enc -aes-256-cbc -d -in cipherhome.tar | tar xf

Générer une paire de clés

Génération de la clé privée sur 4096 bits:

$ openssl genrsa -out private.pem -aes256 4096
Generating RSA private key, 4096 bit long modulus
.........................................................................................++
.++
e is 65537 (0x10001)
Enter pass phrase for private.pem:
Verifying - Enter pass phrase for private.pem:

Génération de la clé publique a partir de la clé privée:

$ openssl rsa -in private.pem -out public.pem -outform PEM -pubout
Enter pass phrase for private.pem:
writing RSA key

Chiffrement avec clé

Chiffrement du fichier en utilisant la clé publique:

$ openssl rsautl -encrypt -inkey public.pem -pubin -in plaintext -out ciphertext

Déchiffrement du fichier en utilisant la clé privée:

$ openssl rsautl -decrypt -inkey private.pem -in ciphertext -out plaintext

Certificat

$ openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365
Generating a 4096 bit RSA private key
........................................................................................................................................++
............................................................................................++
writing new private key to 'key.pem'
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----
Country Name (2 letter code) [AU]:
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:
Email Address []:

req = Requête de certificat PKCS#10 et utilitaire de génération de certificats.
x509 = Génère un certificat auto-signé au lieu de faire une requête de certificat, généralement utilisé pour génerer un certificat de test ou un root CA auto-signé.
newkey <rsa:nbits> = Crée une nouvelle requête de certificat et une nouvelle clé privée, l'argument est de la forme rsa:nbits, ou nbits et le nombre de bits de la clé.
keyout <file> = Spécifie le fichier dans lequel écrire la nouvelle clé privée.
out <file> = Spécifie le fichier du certificat.
days = Quand l'option -x509 est utilisée, spécifie le nombre de jour où le certificat est certifié.

Il est également possible de supprimer la passphrase sur la clé, ce qui peut avoir un côté pratique lors de l'utilisation des clés pour un serveur web:

openssl rsa -in key.pem -out keynopass.pem
wiki/openssl.txt · Dernière modification: 2019/10/27 21:29 par root
CC0 1.0 Universal
Powered by PHP Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0 Valid HTML5