Pour commencer, il est nécessaire de disposer :

  • d'un certificat de signature délivré par une autorité de certification. Veuillez noter que la procédure proposée ici ne fonctionne pas avec un certificat X.509 autosigné
  • de la clé privée associée à ce certificat (et éventuellement du passphrase de chiffrement de la clé);
  • de la chaîne de certification du certificat de signature.

Ce tutorial permet d'utiliser un container cryptographique standardisé PKCS7 qui embarquera les données signées, la signature et les informations du signataire.

Signer

openssl smime -sign \
     -in fichier_à_signer \
     -outform pem -out fichier_sortie_pkcs7 \
     -nodetach \
     -signer certificat_signataire \
     -inkey cle_privée_signataire \
     -certfile chaîne_de_certification_signataire

Vérifier

openssl smime -verify \
     -in fichier_signé_pkcs7 -inform pem \
     -out fichier_de_donnees \
     -CAfile chaine_de_certification \
     -certfile certificat_du_signature

Si la vérification échoue, la commande revoie un code retour (>0). Si la commande réussie (code retour=0), le fichier de donnée contient les données signées.

Il est possible également avec la commande smime de openssl de chiffrer/déchiffrer ou d'utiliser des formats d'échange de type S/MIME plutôt que PKCS7. Pour cela, RTFM.