Openssl
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.pngla photo que je veux protégerpublic.pemma clé publiquesignature.txtle fichier de signature généré plus haut (ou directement lephoto.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.