[Mémo] Manipulations des outils cryptographiques d’OpenSSL

Je me mets ça dans un coin, ça peut toujours servir… Voici quelques commandes utiles permettant de manipuler les outils cryptographiques d’OpenSSL.

Le benchmark du pauvre…

OpenSSL vous permet de tester sa vitesse d’exécution sur votre machine avec différents algorithmes de chiffrement. Exemple en comparant SHA1 et MD5 :

sudo openssl speed sha1 md5
Doing md5 for 3s on 16 size blocks: 6978523 md5's in 3.00s
Doing md5 for 3s on 64 size blocks: 5410368 md5's in 3.00s
Doing md5 for 3s on 256 size blocks: 3147102 md5's in 3.00s
Doing md5 for 3s on 1024 size blocks: 1177609 md5's in 3.00s
Doing md5 for 3s on 8192 size blocks: 171460 md5's in 3.00s
Doing sha1 for 3s on 16 size blocks: 9619412 sha1's in 3.00s
Doing sha1 for 3s on 64 size blocks: 6770396 sha1's in 3.00s
Doing sha1 for 3s on 256 size blocks: 3622302 sha1's in 3.01s
Doing sha1 for 3s on 1024 size blocks: 1267974 sha1's in 3.00s
Doing sha1 for 3s on 8192 size blocks: 180083 sha1's in 3.00s
OpenSSL 1.0.1i-dev xx XXX xxxx
built on: Sat Jun 14 21:54:08 UTC 2014
options:bn(64,64) rc4(16x,int) des(idx,cisc,16,int) aes(partial) blowfish(idx) 
compiler: gcc -fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -m64 -DL_ENDIAN -DTERMIO -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -Wl,-z,relro -Wa,--noexecstack -Wall -DMD32_REG_T=int -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM
The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
md5              37218.79k   115421.18k   268552.70k   401957.21k   468200.11k
sha1             51303.53k   144435.11k   308076.18k   432801.79k   491746.65k

On voit bien que MD5 est plus rapide pour les plus gros blocks. Vous pouvez aussi tester si votre version d’OpenSSL et votre processeur supportent l’accélération matérielle (AES-NI)

openssl speed aes-256-cbc
openssl speed -evp aes-256-cbc

La deuxième commande, qui utilise l’accélération matérielle, devrait donner des chiffres plus élevés. Mon petit Intel i3 2120T me fait passer de 10 719 537 blocs de 16 octets à 32 175 696 de blocs !

Afficher la signature d’un certificat

openssl x509 -subject -dates -fingerprint -in mon-domaine.key.pem

Générer une clé RSA ou EC

openssl genrsa -out mon-domaine.key.pem 4096
openssl ecparam -out mon-domaine.key.pem -name prime256v1 -genkey

Afficher les informations d’un certificat

Pour afficher les informations d’une requête de certificat (CSR) :

openssl req -text -noout -in mon-domaine.csr.pem

Pour un certificat qui a déjà été signé :

openssl x509 -in mon-domaine.crt.pem -noout -text

Créer un fichier PKCS#12 :

openssl pkcs12 -export -in mon-domaine.crt.pem -inkey mon-domaine.key.pem -out mon-domaine.p12 -name "Guillaume Leduc"

Le fichier PKCS#12 est un fichier chiffré qui contient à la fois une clé privée x509 et son certificat public, il est notamment utilisé par les clients mails ou les navigateurs web pour authentifier les clients.

Jouer avec une autorité de certification

Créer une autorité de certification

Une simple création de PKI suffit.

openssl req -new -x509 -keyout ma-ca.key.pem -out ma-ca.crt.pem -days 3652

Pour garder notre système cohérent et sûr je vous conseille de placer la clé privée dans un dossier private par exemple, et d’éditer le fichier de configuration d’OpenSSL qui par défaut ne propose pas des niveaux de chiffrement suffisamment élevés.

Exporter notre certificat CA au format DER

Je referai un article sur la jungle de formats…

openssl x509 -in ma-ca.crt.pem -outform der -out ma-ca.crt

Ce format est surtout utilisé par les navigateurs web, ou encore Android (il me semble).

Signer une requête de certificat avec notre CA

Je me répète, mais comme c’est un mémo…

openssl ca -out mon-domaine.crt.pem -in mon-domaine.req.pem

Révoquer un certificat

openssl ca -revoke mon-domaine.crt.pem

Publier une liste de révocations (CRL)

Cette liste indique aux utilisateurs si les certificats qu’ils utilisent sont toujours valides.

openssl ca -gencrl -out mon-domaine.crl

Créer une certificat auto-signé à partir d’une clé privée

openssl req -new -x509 -key mon-domaine.key.pem -out mon-domaine.crt.pem

Quelques astuces

Chiffrer / Déchiffrer un fichier avec Openssl

J’utilise cette fonction dans mon script de sauvegarde !

# Pour chiffrer
openssl enc -bf -A -in fichier_a_chiffrer
# Pour déchiffrer
openssl enc -bf -d -1 -in fichier_a_decrypter

Cet article vous a plu ? Partagez-le sur les réseaux sociaux !

Twitter Facebook Google Plus email