OPENSSL-SMIME(1SSL)

NOM
openssl-smime - S/MIME command

SYNOPSIS
openssl smime [-help] [-encrypt] [-decrypt] [-sign] [-resign] [-verify] [-pk7out] [-binary] [-crlfeol] [-cipher] [-in file] [-certfile file] [-signer file] [-nointern] [-noverify] [-nochain] [-nosigs] [-nocerts] [-noattr] [-nodetach] [-nosmimecap] [-recip file] [-inform DER|PEM|SMIME] [-outform DER|PEM|SMIME] [-keyform DER|PEM|P12|ENGINE] [-passin arg] [-inkey filename|uri] [-out file] [-content file] [-to addr] [-from ad] [-subject s] [-text] [-indef] [-noindef] [-stream] [-md digest] [-CAfile file] [-no-CAfile] [-CApath dir] [-no-CApath] [-CAstore uri] [-no-CAstore] [-engine id] [-rand files] [-writerand file] [-allow_proxy_certs] [-attime timestamp] [-no_check_time] [-check_ss_sig] [-crl_check] [-crl_check_all] [-explicit_policy] [-extended_crl] [-ignore_critical] [-inhibit_any] [-inhibit_map] [-partial_chain] [-policy arg] [-policy_check] [-policy_print] [-purpose purpose] [-suiteB_128] [-suiteB_128_only] [-suiteB_192] [-trusted_first] [-no_alt_chains] [-use_deltas] [-auth_level num] [-verify_depth num] [-verify_email email] [-verify_hostname hostname] [-verify_ip ip] [-verify_name name] [-x509_strict] [-issuer_checks] [-provider name] [-provider-path path] [-provparam [name:]key=value] [-propquery propq] [-config configfile] recipcert ...

DESCRIPTION
This command handles S/MIME mail. It can encrypt, decrypt, sign and verify S/MIME messages.

OPTIONS
There are six operation options that set the type of operation to be performed: -encrypt, -decrypt, -sign, -resign, -verify, and -pk7out. These are mutually exclusive. The meaning of the other options varies according to the operation type.

-help
    Afficher un message d'utilisation.

-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.

    Note that no revocation check is done for the recipient cert, so if that key has been compromised, others may be able to decrypt the text.

-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.

-resign
    Re-signer un message à partir d’un message existant et au moins un nouveau signataire.

-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.

-in fichier
    Le message d’entrée à chiffrer ou signer, ou le message MIME à déchiffrer ou vérifier.

-out filename
    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é.

-inform DER|PEM|SMIME
    The input format of the PKCS#7 (S/MIME) structure (if one is being read); the default is SMIME. See openssl-format-options(1) for details.

-outform DER|PEM|SMIME
    The output format of the PKCS#7 (S/MIME) structure (if one is being written); the default is SMIME. See openssl-format-options(1) for details.

-keyform DER|PEM|P12|ENGINE
    The key format; unspecified by default. See openssl-format-options(1) for details.

-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.

-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
    The encryption algorithm to use. For example, DES (56 bits) - -des, triple DES (168 bits) - -des3, or AES (256 bits) - -aes256. Any standard algorithm name (as used by the EVP_get_cipherbyname() function) can also be used, preceded by a dash, for example -aes-128-cbc. See openssl-enc(1) for a list of ciphers supported by your version of OpenSSL.

    If not specified, AES-256-CBC is used as the default. Only used with -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.

-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.

-nosmimecap
    When signing a message, do not include the SMIMECapabilities attribute.

-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.

-crlfeol
    Normally the output file uses a single LF as end of line. When this option is present CRLF is used instead.

-certfile fichier
    Allows additional certificates to be specified. When signing these will be included with the message. When verifying, these will be searched for signer certificates and will be used for chain building.

    The input can be in PEM, DER, or PKCS#12 format.

-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 filename|uri
    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
    The private key password source. For more information about the format of arg see openssl-passphrase-options(1).

-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.

-allow_proxy_certs, -attime, -no_check_time, -check_ss_sig, -crl_check, -crl_check_all, -explicit_policy, -extended_crl, -ignore_critical, -inhibit_any, -inhibit_map, -no_alt_chains, -partial_chain, -policy, -policy_check, -policy_print, -purpose, -suiteB_128, -suiteB_128_only, -suiteB_192, -trusted_first, -use_deltas, -auth_level, -verify_depth, -verify_email, -verify_hostname, -verify_ip, -verify_name, -x509_strict -issuer_checks
    Set various options of certificate chain verification. See "Verification Options" in openssl-verification-options(1) for details.

    Any verification errors cause the command to exit.

-CAfile file, -no-CAfile, -CApath dir, -no-CApath, -CAstore uri, -no-CAstore
    See "Trusted Certificate Options" in openssl-verification-options(1) for details.

-engine id
    Voir « Options de moteur » dans openssl(1). Cette option est obsolète.

-rand fichiers, -writerand fichier
    Voir « Options d'état aléatoire » dans openssl(1) pour des détails.

-provider nom
-provider-path chemin
-provparam [nom:]clé=valeur]
-propquery propq
    Voir « Options de fournisseur » dans openssl(1), provider(7) et property(7).

-config configfile
    See "Configuration Option" in openssl(1).

recipcert ...
    Au moins un certificat de destinataires de message : utilisé lors du chiffrement d’un message.

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.

The -stream and -indef options enable streaming I/O support. As a result the encoding is BER using indefinite length constructed encoding and no longer DER. Streaming is supported for the -encrypt operation and the -sign operation if the content is not detached.

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 mail.msg \
        -signer mycert.pem

Créer un message signé opaque :

 openssl smime -sign -in message.txt -text -out mail.msg -nodetach \
        -signer mycert.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 in.txt -text -out mail.msg \
        -signer mycert.pem -inkey mykey.pem -certfile mycerts.pem

Créer un message signé avec deux signataires :

 openssl smime -sign -in message.txt -text -out mail.msg \
        -signer mycert.pem -signer othercert.pem

Envoyer un message signé sous UNIX directement à sendmail, y compris les en-têtes :

 openssl smime -sign -in in.txt -text -signer mycert.pem \
        -from steve@openssl.org -to someone@somewhere \
        -subject "Signed message" | sendmail someone@somewhere

Vérifier un message et extraire le certificat du signataire en cas de réussite :

 openssl smime -verify -in mail.msg -signer user.pem -out signedtext.txt

Envoyer un message chiffré en utilisant un DES triple :

 openssl smime -encrypt -in in.txt -out mail.msg -from steve@openssl.org \
        -to someone@somewhere -subject "Encrypted message" \
        -des3 user.pem

Signer et chiffrer un message :

 openssl smime -sign -in ml.txt -signer my.pem -text \
        | openssl smime -encrypt -out mail.msg \
        -from steve@openssl.org -to someone@somewhere \
        -subject "Signed and Encrypted message" -des3 user.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 mail.msg -recip mycert.pem -inkey key.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 plain.txt -camellia128 -out mail.msg cert.pem

Ajouter un signataire à un message existant :

 openssl smime -resign -in mail.msg -signer newsign.pem -out mail2.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.

VOIR AUSSI
ossl_store-file(7)

HISTORIQUE
The default encryption cipher was changed from 3DES to AES-256 in OpenSSL 3.5.

L’utilisation de plusieurs options -signer et la commande -resign ont été ajoutées pour la première fois dans OpenSSL 1.0.0

L’option -no_alt_chains a été ajoutée à OpenSSL 1.1.0.

L’option -engine est obsolète depuis OpenSSL 3.0.

COPYRIGHT
Copyright 2000-2025 Les auteurs du projet OpenSSL. Tous droits réservés.

Sous licence Apache 2.0 (la « Licence »). Vous ne pouvez utiliser ce fichier que conformément à la Licence. Vous trouverez une copie dans le fichier LICENSE de la distribution du source ou à l'adresse <https://www.openssl.org/source/license.html>.

TRADUCTION
La traduction française de cette page de manuel a été créée par David Prévot <david@tilapin.org>

Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 (https://www.gnu.org/licenses/gpl-3.0.html) concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à debian-l10n-french@lists.debian.org.