NOM¶
smime - Utilitaire S/MIME
SYNOPSIS¶
openssl smime [
-encrypt] [
-decrypt] [
-sign]
[
-resign] [
-verify] [
-pk7out]
[
-chiffrement] [
-in fichier] [
-certfile
fichier] [
-signer fichier] [
-recip fichier]
[
-inform SMIME|
PEM|
DER] [
-passin param]
[
-inkey fichier] [
-out fichier] [
-outform
SMIME|
PEM|
DER] [
-content fichier]
[
-to adresse] [
-from adresse] [
-subject
sujet] [
-text] [
-indef] [
-noindef]
[
-stream] [
-rand fichier(s)] [
-md
algorithme] [
cert.pem] ...
DESCRIPTION¶
La commande
smime traite les courriers S/MIME. Elle peut chiffrer,
déchiffrer, signer et vérifier les messages S/MIME.
OPTIONS DE LA COMMANDE¶
Six options d’opération permettent de définir le type
d’opération à réaliser. La signification des
autres options dépend du type d’opération.
- -encrypt
- Chiffrer un message pour les certificats de destinataires donnés.
Le fichier d’entrée est le message à chiffrer. Le
fichier de sortie est le message chiffré au format MIME.
- -decrypt
- Déchiffrer un message en utilisant le certificat et la clef
privée fournis. Le fichier d’entrée attendu est un
message chiffré au format MIME. Le fichier de sortie est le message
déchiffré.
- -sign
- Signer un message en utilisant le certificat et la clef privée
fournis. Le fichier d’entrée est le message à signer.
Le fichier de sortie est le message signé au format MIME.
- -verify
- Vérifier un message signé. Un message signé est
attendu en entrée, les données signées sont
envoyées en sortie. Les signatures en texte clair et opaques sont
prises en charge.
- -pk7out
- Écrire une structure PKCS#7 encodée PEM en sortie à
partir d’un message en entrée.
- -resign
- Re-signer un message à partir d’un message existant et au
moins un nouveau signataire.
- -in fichier
- Le message d’entrée à chiffrer ou signer, ou le
message MIME à déchiffrer ou vérifier.
- -inform SMIME|PEM|DER
- Cela indique le format d’entrée pour la structure PKCS#7.
C’est SMIME par défaut qui lit un message au format
S/MIME. Les formats PEM et DER modifient cela pour pour
attendre des structures PKCS#7 au format PEM ou DER à la place.
Cela ne concerne actuellement que le format d’entrée de la
structure PKCS#7, si aucune structure PKCS#7 n’est fournie en
entrée (par exemple avec -encrypt ou -sign), cette
option ne sert à rien.
- -out fichier
- Le texte de message qui a été déchiffré ou
vérifié, ou le message de sortie au format MIME qui a
été signé ou vérifié.
- -outform SMIME|PEM|DER
- Cela indique le format de sortie pour la structure PKCS#7. C’est
SMIME par défaut qui écrit un message au format
S/MIME. Les formats PEM et DER modifient cela pour pour
écrire des structures PKCS#7 au format PEM ou DER à la
place. Cela ne concerne actuellement que le format de sortie de la
structure PKCS#7, si aucune structure PKCS#7 n’est en sortie (par
exemple avec -verify ou -decrypt), cette option ne sert
à rien.
- -stream, -indef
- Les options -stream et -indef sont équivalentes et
activent l’utilisation de flux d’entrées et sorties
pour les opérations d’encodage. Cela permet le traitement de
données en une seule passe sans devoir faire tenir tout le contenu
en mémoire, avec la possibilité de prendre en charge de
très gros fichiers. Le flux est automatiquement défini pour
la signature S/MIME avec données détachées si le
format de sortie est SMIME, et actuellement désactivé
par défaut pour toutes les autres opérations.
- -noindef
- Désactiver le flux d’entrées et sorties là
où cela produirait un encodage construit de taille
indéfinie. Cette option ne sert actuellement à rien.
À l’avenir, le flux sera activé par défaut sur
toutes les opérations adéquates, et cette option permettra
de le désactiver.
- -content fichier
- Cela indique un fichier avec le contenu détaché, ce
n’est utile qu’avec la commande -verify. Ce
n’est utilisable que si la structure PKCS#7 utilise la forme de
signature détachée où le contenu n’est pas
inclus. Cette option écrasera tout le contenu si le format
d’entrée est S/MIME et qu’il utilise le type de
contenu MIME multipart/signed.
- -text
- Cette option ajoute les en-têtes MIME de texte clair (text/plain)
au message fourni en cas de chiffrement ou de signature. En cas de
déchiffrement ou de vérification, cela supprime les
en-têtes de texte : si le message déchiffré ou
vérifié n’est pas de type MIME text/plain, alors une
erreur survient.
- -CAfile fichier
- Un fichier contenant les certificats d’autorités de
confiance, utilisé seulement avec -verify.
- -CApath rép
- Un répertoire contenant les certificats d’autorités
de confiance, utilisé seulement avec -verify. Ce
répertoire doit être un répertoire de certificats
normalisé : c’est-à-dire qu’un hachage
de chaque nom de sujet (utilisant x509 -hash) devrait être
lié à chaque certificat.
- -md algorithme
- L’algorithme de signature à utiliser lors de signature ou
re-signature. En cas d’absence, l’algorithme de signature
par défaut pour la clef de signature sera utilisé (en
général SHA1).
- -chiffrement
- L’algorithme de chiffrement à utiliser. Par exemple DES
(56 bits) - -des, DES triple (168 bits) -
-des3. Tout ce qui est accepté par la fonction
EVP_get_cipherbyname() peut aussi être utilisé
précédé d’un tiret, par exemple
-aes_128_cbc. Consultez enc(1) pour une liste
d’algorithmes de chiffrement pris en charge par cette version
d’OpenSSL.
En absence d’indication, DES triple est utilisé.
Utilisé seulement avec -encrypt.
- -nointern
- Lors de la vérification d’un message, les certificats inclus
(s’il y en a) sont généralement recherchés
dans le message pour trouver le certificat de signature. Avec cette
option, seuls les certificats indiqués dans l’option
-certfile sont utilisés. Les certificats fournis peuvent
cependant toujours être utilisés comme autorités de
certification non dignes de confiance.
- -noverify
- Ne pas vérifier le certificat des signataires d’un message
signé.
- -nochain
- Ne pas enchaîner la vérification des certificats de
signataires : c’est-à-dire ne pas utiliser les
certificats dans le message signé comme autorités de
certification non dignes de confiance.
- -nosigs
- Ne pas essayer de vérifier les signatures sur le message.
- -nocerts
- Lors de la signature d’un message, le certificat du signataire est
normalement inclus, mais est exclu avec cette option. Cela réduira
la taille du message signé mais le vérificateur doit avoir
une copie locale disponible du certificat des signataires (passée
en utilisant par exemple l’option -certfile).
- -noattr
- Normalement, quand un message est signé, un ensemble
d’attributs est inclus, y compris l’heure de signature et
les algorithmes symétriques pris en charge. Avec cette option, ils
ne sont pas inclus.
- -binary
- Normalement, le message d’entrée est converti au format
« canonique », c’est à dire en
utilisant effectivement RC et PAL (CR et LF en anglais) comme fin de
ligne : conformément à la spécification
S/MIME. Quand cette option est présente, aucune traduction
n’est réalisée. C’est utile lors du traitement
de données binaires qui pourraient ne pas être au format
MIME.
- -nodetach
- Lors de la signature d’un message en utilisant une signature
opaque : cette forme résiste mieux à la traduction
par relais de message, mais ne peut pas être lue par des clients de
lecture de courriers qui ne prennent pas en charge S/MIME. Sans cette
option, une signature en clair avec le type MIME multipart/signed est
utilisée.
- -certfile fichier
- Permet d’indiquer plusieurs certificats supplémentaires.
Lors de la signature, ils seront inclus avec le message. Lors de la
vérification, ils seront parcourus à la recherche de
certificats de signataires. Les certificats devraient être au
format PEM.
- -signer fichier
- Un certificat de signature lors de la signature ou re-signature
d’un message, cette option peut être utilisée
plusieurs fois si plus d’un signataire est nécessaire. Si un
message est en cours de vérification, alors les certificats des
signataires seront écrits dans ce fichier si la vérification
est réussie.
- -recip fichier
- Le certificat des destinataires lors du déchiffrement d’un
message. Ce certificat doit correspondre à celui des destinataires
du message ou alors une erreur survient.
- -inkey fichier
- La clef privée à utiliser lors de la signature ou du
déchiffrement. Cela doit correspondre au certificat correspondant.
Si cette option n’est pas indiquée, alors la clef
privée doit être incluse dans le fichier de certificats
indiqué avec les options -recip ou -signer. Lors de
la signature, cette option peut être utilisée plusieurs fois
pour indiquer des clefs successives.
- -passin param
- La source du mot de passe de la clef privée. Pour plus de
renseignements sur le format de param, consultez la section
PARAMÈTRES DE PHRASE SECRÈTE d'
openssl(1).
- -rand fichier(s)
- Un ou plusieurs fichiers contenant des données aléatoires
utilisées pour initialiser le générateur de nombres
pseudoaléatoires, ou une socket EGD (consultez RAND_egd(3)).
Plusieurs fichiers peuvent être indiqués en utilisant le
séparateur du système d'exploitation :
« ; » pour Windows, «
, » pour OpenVMS et
« : » pour tous les autres.
- cert.pem ...
- Au moins un certificat de destinataires de message : utilisé
lors du chiffrement d’un message.
- -to, -from, -subject
- Les en-têtes de message adéquats. Ils sont inclus hors de la
partie signée d’un message donc vous pouvez les inclure
vous-même. En cas de signature, plusieurs clients de courriers
S/MIME vérifient que l’adresse électronique du
certificat des signataires correspond à celle indiquée dans
le champ From.
- -purpose, -ignore_critical, -issuer_checks,
-crl_check, -crl_check_all, -policy_check,
-extended_crl, -x509_strict, -policy,
-check_ss_sig
- Définir plusieurs options de vérification de chaîne
de certificats. Consultez la page de manuel verify(1) pour plus de
précisions.
NOTES¶
Le message MIME doit être envoyé sans ligne vide entre les
en-têtes et la sortie. Certains programmes de courriers ajouteront
automatiquement une ligne vide. Passer le message dans un tube directement
à sendmail est une façon de conserver le format correct.
Le message fourni à signer ou chiffrer doit inclure les en-têtes
MIME nécessaires sinon plusieurs clients S/MIME ne l’afficheront
pas correctement (ou pas du tout). Vous pouvez utiliser l’option
-text pour ajouter automatiquement les en-têtes en texte clair.
Un message « signé et chiffré » est un
message signé qui est ensuite chiffré. Cela peut être
réalisé en chiffrant un message déjà
signé : consultez la section d’exemples.
Cette version du programme ne permet qu’un seul signataire par message
mais vérifiera plusieurs signataires sur les messages reçus.
Certains clients S/MIME ont des problèmes avec les messages contenant
plusieurs signataires. Les messages peuvent être signés
« en parallèle » en signant un message
déjà signé.
Les options
-encrypt et
-decrypt miment l’utilisation
classique dans les clients S/MIME. Pour être exact, elles traitent des
données enveloppées PKCS#7 : les données
chiffrées PKCS#7 sont utilisées dans d’autres buts.
L’option
-resign utilise un algorithme de signature de message
existant lors de l’ajout d’un nouveau signataire. Cela signifie
que les attributs doivent être présents dans au moins une
signature existante utilisant le même algorithme de signature de
message, ou cette opération échouera.
Les options
-stream et
-indef activent la prise en charge
expérimentale de flux d’entrées et sorties. Par
conséquent, l’encodage est BER en utilisant un encodage
construit de taille indéfinie et non plus DER. Le flux est pris en
charge pour les opérations
-encrypt et
-sign si le
contenu n’est pas détaché.
Le flux est toujours utilisé pour l’opération
-sign
avec les données détachées mais puisque le contenu ne
fait plus partie de la structure PKCS#7, l’encodage reste DER.
CODES DE RETOUR¶
- 0
- L’opération s’est terminée correctement.
- 1
- Une erreur est survenue lors du traitement des options de la
commande.
- 2
- Un des fichiers d’entrée n’a pas pu être
lu.
- 3
- Une erreur est survenue lors de la création du fichier PKCS#7 ou
lors de la lecture du message MIME.
- 4
- Une erreur est survenue lors du déchiffrement ou de la
vérification du message.
- 5
- Le message a été vérifié correctement mais une
erreur est survenue lors de l’écriture des certificats de
signataires.
EXEMPLES¶
Créer un message signé en texte clair :
openssl smime -sign -in message.txt -text -out courrier.msg \
-signer moncert.pem
Créer un message signé opaque :
openssl smime -sign -in message.txt -text -out courrier.msg -nodetach \
-signer moncert.pem
Créer un message signé, inclure quelques certificats
supplémentaires et lire la clef privée depuis un autre
fichier :
openssl smime -sign -in entrée.txt -text -out courrier.msg \
-signer moncert.pem -inkey maclef.pem -certfile mescert.pem
Créer un message signé avec deux signataires :
openssl smime -sign -in message.txt -text -out courrier.msg \
-signer moncert.pem -signer autrecert.pem
Envoyer un message signé sous UNIX directement à sendmail, y
compris les en-têtes :
openssl smime -sign -in entrée.txt -text -signer moncert.pem \
-from steve@openssl.org -to quelquun@quelquepart \
-subject "Message avec signature" | sendmail quelquun@quelquepart
Vérifier un message et extraire le certificat du signataire en cas de
réussite :
openssl smime -verify -in courrier.msg -signer utilisateur.pem \
-out textsigné.txt
Envoyer un message chiffré en utilisant un DES triple :
openssl smime -encrypt -in entrée.txt -from steve@openssl.org \
-to quelquun@quelquepart -subject "Message avec chiffrement" \
-des3 utilisateur.pem -out courrier.msg
Signer et chiffrer un message :
openssl smime -sign -in ml.txt -signer mon.pem -text \
| openssl smime -encrypt -out courrier.msg \
-from steve@openssl.org -to quelquun@quelquepart \
-subject "Message avec signature et chiffrement" \
-des3 utilisateur.pem
Remarque : la commande de chiffrement n’inclut pas l’option
-text parce que le message en cours de chiffrement a déjà
les en-têtes MIME.
Déchiffrer un courrier :
openssl smime -decrypt -in courrier.msg -recip moncert.pem \
-inkey clef.pem
La sortie du type Netscape de signature est une structure PKCS#7 au format de
signature détachée. Vous pouvez utiliser ce programme pour
vérifier la signature en coupant les lignes de structure
encodées en base64 et en les encadrant avec :
-----BEGIN PKCS7-----
-----END PKCS7-----
et en utilisant la commande :
openssl smime -verify -inform PEM -in signature.pem -content contenu.txt
Sinon, vous pouvez aussi décoder de base64 la signature et
utiliser :
openssl smime -verify -inform DER -in signature.der -content contenu.txt
Créer et chiffrer un message en utilisant Camellia
128 bits :
openssl smime -encrypt -in clair.txt -camellia128 \
-out courrier.msg cert.pem
Ajouter un signataire à un message existant :
openssl smime -resign -in courrier.msg -signer nouvellesignature.pem \
-out courrier2.msg
BOGUES¶
L’analyseur MIME n’est pas très intelligent : il
semble traiter la plupart des messages essayés jusqu’à
présent mais pourrait avoir des problèmes avec d’autres.
Le code ne peut actuellement écrire le certificat du signataire que vers
un fichier : si le signataire a un certificat de chiffrement
séparé, vous devrez l’extraire vous-même. Il
devrait y avoir une heuristique pour déterminer le certificat de
chiffrement adéquat.
Dans l’idéal, une base de données de certificats devrait
être maintenue pour chaque adresse électronique.
Le code ne prend actuellement pas en compte les algorithmes de chiffrement
symétrique permis tels que fournis dans l’attribut signé
SMIMECapabilities. Cela signifie que l’utilisateur doit inclure
lui-même l’algorithme de chiffrement correct. Il devrait
conserver la liste des algorithmes de chiffrement permis dans une base de
données et n’utiliser que ceux-là.
Aucune vérification de révocation n’est
réalisée sur le certificat du signataire.
Le code actuel ne peut traiter que les messages S/MIME v2, les structures
S/MIME v3 plus complexes peuvent provoquer des erreurs
d’analyse.
HISTORIQUE¶
L’utilisation de plusieurs options
-signer et la commande
-resign ont été ajoutées pour la première
fois dans OpenSSL 1.0.0
TRADUCTION¶
La traduction de cette page de manuel est maintenue par les membres de la liste
<debian-l10n-french AT lists DOT debian DOT org>. Veuillez signaler
toute erreur de traduction par un rapport de bogue sur le paquet
manpages-fr-extra.