Openssl

De knowledge
Aller à la navigation Aller à la recherche

Dans cette page je vais donner, en vrac, les commandes openssl que j'utilise de temps en temps. Pas assez souvent pour qu'elles soient dans ma tête mais assez souvent pour ne pas devoir demande à google.

Les clés privées

Taille de la clé privée.

On a une clé privée (comme avec la PKI familiale) et on ne se souviens plus de sa taille. On l'a crée il y a longtemps, est elle toujours assez robuste vu l'évolution des technologies?

$ openssl rsa -in ca.key -text -noout | head -1
RSA Private-Key: (2048 bit, 2 primes)

On a une clé au format RSA (c'est ce qu'on a demandé) de 2048 bits!

Les clés publiques

Toujours à partir de la même clé privée on peut en extraire la partie publique:

openssl rsa -in CA.key -pubout

Nous donne sur la sortie standard la clé publique :

-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5pvXlS6kiFmTPMWXlYV5
ygwiG+dw58EoLenOPkGrP0HNGv9Plyl+WgNB/PKbkKEVn2/cWNXNSBVJTT7sqedz
4jqZvCGrO+Szmn9TsPUV+weyOf8IcgcrEm9uEQktjXrHYXU6NhKxPt9FbTEaY/th
hdubH9ruevL/rqUDZ8BOozOIHCJTSR6wKHY4dEAXf3c+XpQWjpcP/RvJcfK6MMeg
TsRkIkL2TkE/KDspBiwHztf+uTZ1WLVsqwveKtr0/H/WsLKoo3+F2QQzY62ocSrB
4WaT/wsVCHyDISKhMjlJWj/qF9Y7UUyoSNeZmycSfCTT7KLjbj9uSABvawdTlexB
9wIDAQAB
-----END PUBLIC KEY-----

Oui c'est la clé publique de ma PKI Familiale vous pouvez l'utiliser pour m'envoyer des fichier chiffrés ou vérifier l'intégrité de mes fichiers (vois signature ci dessous). Ou bien on la range dans un fichier :

openssl rsa -in CA.key -pubout -out public.pem

Signatures

Signer un fichier

On a un fichier test.png qui contient une image a signer (une photo dont on veut prouver être l'auteur).

On dispose de :

  • photo.png (la photo)
  • private.key (la clé privée)
openssl dgst -sha256 -sign CA.key -out photo.sha256 photo.png
openssl base64 -in photo.sha256 -out signature.txt

Le fichier signature.txt est plus facile a échanger (c'est du texte) alors que le fichier photo.sha256 est la version binaire. Ca nous donne une signature sous forme de digest sha256. Exemple:

CYjn+0nqpskvi6rOseZ8X5BtoDcIDvIvm6uYN/jQqAkQl3OpkKtGDwt6/25Dn3Jt
0o4aOpcFAG0moNQTaVU2ut2M+UD9XEEALthkWmHWqK4t0JXj1ibuHiX4BC9f3V0i
vLDi14+yurQxQMUIOBkUI7mSGceVQ2aYQtxUMBWoM7nuEG9zsCXfr6aCgfwNS1W7
LBSkE50uIOnJKHS+rf/J06p69Fh8RRDwpDvkHqXINUysJg/I7QH6LdoCN275vz9k
rKcuvR4LfN0m9d2qK7cWSnvP7190P50eXqOz20ZYmg34bt4nwHGdq1sh0eHJAhR2
e5Pjcskbz7oqzoKdtMjZOA==

C'est sûr mais un peu long... mais c'est ça.

Vérifier

On a besoin de trois choses :

  • photo.png la photo que je veux protéger
  • public.pem ma clé publique
  • signature.txt le fichier de signature généré plus haut (ou directement le photo.sha256)
openssl base64 -d -in signature.txt -out sign.sha256 # Si on ne dispose plus du fichier binaire
openssl dgst -sha256 -verify public.pem -signature sign.sha256 photo.png

Qui doit nous répondre

Verified OK

Lorsque tout se passe bien.

Verification Failure

sinon.