NOM¶
ts - Outil d’autorité d’horodatage (client et serveur)
SYNOPSIS¶
openssl ts -query [
-rand fichier:fichier...]
[
-config fichier_conf] [
-data
fichier_à_hacher] [
-digest octets_sign] [
-md2|
-md4|
-md5|
-sha|
-sha1|
-mdc2|
-ripemd160|...]
[
-policy id_objet] [
-no_nonce] [
-cert]
[
-in demande.tsq] [
-out demande.tsq]
[
-text]
openssl ts -reply [
-config fichier_conf] [
section
section_tsa] [
-queryfile demande.tsq] [
-passin
src_mot_de_passe] [
-signer tsa_cert.pem] [
-inkey
privée.pem] [
-chain fichier_certs.pem]
[
-policy id_objet] [
-in réponse.tsr]
[
-token_in] [
-out response.tsr] [
-token_out] [
-text] [
-engine id]
openssl ts -verify [
-data fichier_à_hacher]
[
-digest octets_sign] [
-queryfile demande.tsq]
[
-in réponse.tsr] [
-token_in] [
-CApath
chemin_cert_confiance] [
-CAfile certs_confiance.pem]
[
-untrusted fichier_cert.pem]
DESCRIPTION¶
La commande
ts est une application client et serveur
d’autorité d’horodatage (« Time Stamping
Authority », TSA) conforme à la RFC 3161
(protocole d'horodatage, « Time-Stamp Protocol »
TSP). Une TSA peut faire partie d'un déploiement de PKI et son
rôle est de fournir des preuves à long terme de l'existence
d'une certaine donnée avant un moment donné. Voici une
brève description du protocole.
- 1.
- Le client TSA calcule une valeur de hachage à sens unique pour un
fichier de données et envoie le hachage à la TSA.
- 2.
- La TSA attache la date et l'heure à la valeur de hachage
reçue, les signe et envoie le jeton d’horodatage au client.
En créant ce jeton, la TSA certifie l'existence du fichier original
de données au moment où la réponse est
créée.
- 3.
- Le client TSA reçoit le jeton d'horodatage et en vérifie la
signature. Il vérifie également si le jeton contient la
même valeur de hachage qu'il avait envoyé à la
TSA.
Une unité de données de protocole encodée DER est
définie pour le transport d'une demande d'horodatage à la TSA et
une autre pour l'envoi de la réponse d'horodatage au client. La
commande
ts a trois fonctions principales : créer une
demande d'horodatage à partir d'un fichier de données,
créer une réponse d'horodatage à partir d'une demande et
vérifier si une réponse correspond à une demande
particulière ou à un fichier de données.
Aucune prise en charge n’existe encore pour l’envoi de demandes et
réponses automatiquement par HTTP ou TCP comme suggéré
dans la RFC 3161. Les utilisateurs doivent envoyer les demandes par FTP
ou courrier électronique.
OPTIONS¶
Création de demande d’horodatage¶
L’option
-query peut être utilisée pour créer
et afficher une demande d'horodatage avec les options suivantes :
- -rand fichier:fichier...
- Les fichiers contenant des données aléatoires
utilisées pour initialiser le générateur de nombres
pseudoaléatoires. 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.
(Facultatif)
- -config fichier_conf
- Le fichier de configuration à utiliser, cette option remplace la
variable d'environnement OPENSSL_CONF. Seule la section OID du
fichier de configuration est utilisée avec la commande
-query. (Facultatif)
- -data fichier_à_hacher
- Le fichier de données pour lequel la demande d'horodatage doit
être créée. L’entrée standard est la
valeur par défaut si aucune des options -data ou
-digest n’est indiquée. (Facultatif)
- -digest octets_sign
- Indiquer explicitement l’empreinte du message est possible sans le
fichier de données. L’empreinte doit être
indiquée au format hexadécimal, deux caractères par
octet, les octets éventuellement séparés par des
deux-points (par exemple 1A:F6:01:... ou 1AF601...). Le nombre
d’octets doit correspondre à l’algorithme de
signature de message utilisé. (Facultatif)
- -md2|-md4|-md5|-sha|-sha1|-mdc2|-ripemd160|...
- La signature de message à appliquer au fichier de données,
tous les algorithmes de signature de message pris en charge par la
commande openssl dgst sont utilisables. La valeur par défaut
est SHA-1. (Facultatif)
- policy id_objet
- La politique attendue par le client de la TSA à utiliser pour
créer le jeton d'horodatage. Soit la notation OID avec points, soit
les noms d’OID définis dans le fichier de configuration
peuvent être utilisés. Si aucune politique n’est
demandée, la TSA utilisera sa propre politique par défaut.
(Facultatif)
- -no_nonce
- Aucun nonce n’est indiqué dans la demande si cette option
est donnée. Sinon, un nonce pseudoaléatoire de
64 bits est inclus dans la demande. Utiliser nonce est
recommandé pour se protéger contre les attaques par rejeu.
(Facultatif)
- -cert
- La TSA devrait inclure son certificat de signature dans la réponse.
(Facultatif)
- -in demande.tsq
- Cette option indique une demande d'horodatage précédemment
créée au format DER qui sera envoyée dans le fichier
de sortie. Utile pour examiner le contenu d'une demande au format lisible.
(Facultatif)
- -out demande.tsq
- Nom du fichier de sortie où la demande doit être
écrite. La sortie standard par défaut. (Facultatif)
- -text
- Si cette option est indiquée, la sortie est au format texte lisible
au lieu de DER. (Facultatif)
Création de réponse d’horodatage¶
Une réponse d’horodatage (TimeStampResp) se compose d'un
état de réponse et du jeton d'horodatage lui-même
(ContentInfo), si la création du jeton a réussi. La commande
-reply permet de créer une réponse d'horodatage ou un
jeton d'horodatage suivant la demande et l’affichage de la
réponse ou du jeton dans un format lisible. Si
-token_out n'est
pas indiqué, la sortie est toujours une réponse d'horodatage
(TimeStampResp), sinon c'est un jeton d'horodatage (ContentInfo).
- -config fichier_conf
- Le fichier de configuration à utiliser, cette option remplace la
variable d'environnement OPENSSL_CONF. Consultez OPTIONS DU
FICHIER DE CONFIGURATION pour les variables configurables.
(Facultatif)
- -spksect section
- Le nom de la section du fichier de configuration contenant les
paramètres pour la création de la réponse. S'il n'est
pas indiqué, la section TSA par défaut est utilisée,
consultez OPTIONS DU FICHIER DE CONFIGURATION pour plus de
précisions. (Facultatif)
- -queryfile demande.tsq
- Le nom du fichier contenant une demande d’horodatage encodée
en DER. (Facultatif)
- -passin src_mot_de_passe
- Indiquer la source pour la clef privée de la TSA. Consultez la
section PARAMÈTRES DE PHRASE SECRÈTE
d'openssl(1).
- -signer tsa_cert.pem
- Le certificat de signataire de la TSA au format PEM. Le certificat de
signature TSA doit avoir exactement une utilisation de clef étendue
attribuée : timeStamping. L'utilisation de la clef
étendue doit aussi être critique, sinon le certificat sera
refusé. Cela remplace la variable signer_cert du fichier de
configuration. (Facultatif)
- -inkey privée.pem
- La clef privée du signataire de la TSA au format PEM. Cela remplace
l'option signer_key du fichier de configuration. (Facultatif)
- -chain fichier_certs.pem
- L’ensemble des certificats au format PEM qui seront tous inclus
dans la réponse en plus du certificat de signataire si l'option
-cert a été utilisée pour la demande. Ce
fichier est censé contenir la chaîne de certificats pour le
certificat de signataire à partir de ses émetteurs. La
commande -reply ne construit pas de chaîne de certificats
automatiquement. (Facultatif)
- policy id_objet
- La politique par défaut à utiliser pour la réponse
à moins que le client ne demande explicitement une politique TSA
particulière. L'OID peut être indiqué en utilisant
une notation avec points ou par son nom. Cela remplace l'option
default_policy du fichier de configuration. (Facultatif)
- -in réponse.tsr
- Indiquer une réponse d'horodatage créée
précédemment ou un jeton d'horodatage (si -token_in
est également indiquée) au format DER qui sera écrit
dans le fichier de sortie. Cette option ne nécessite pas de
demande, elle est par exemple utile pour examiner le contenu d'une
réponse ou d'un jeton ou pour extraire le jeton d'horodatage d'une
réponse. Si l'entrée est un jeton et la sortie une
réponse d'horodatage, une information d’état
accordée (« granted ») par
défaut est ajoutée au jeton. (Facultatif)
- -token_in
- Cet indicateur peut être utilisé avec l'option -in et
indique que l'entrée est un jeton d'horodatage encodé DER
(ContentInfo) au lieu d'une réponse d'horodatage (TimeStampResp).
(Facultatif)
- -out réponse.tsr
- La réponse est écrite dans ce fichier. Le format et le
contenu du fichier dépendent d'autres options (consultez
-text, -token_out). La valeur par défaut est la
sortie standard. (Facultatif)
- -token_out
- La sortie est un jeton d'horodatage (ContentInfo) au lieu d’une
réponse d’horodatage (TimeStampResp). (Facultatif)
- -text
- Si cette option est indiquée, la sortie est au format texte lisible
au lieu de DER. (Facultatif)
- -engine id
- Indiquer un moteur (en utilisant son identifiant unique id) forcera
ts à essayer d'obtenir une référence
fonctionnelle pour le moteur indiqué et l'initialiser si
nécessaire. Le moteur sera ensuite utilisé par défaut
pour tous les algorithmes disponibles. La valeur par défaut est
« builtin ». (Faclutatif)
Vérification de réponse d’horodatage¶
La commande
-verify sert à vérifier si une réponse
d'horodatage ou un jeton d'horodatage est valable et correspond à une
demande d'horodatage ou un fichier de données particuliers. La commande
-verify n'utilise pas le fichier de configuration.
- -data fichier_à_hacher
- La réponse ou le jeton doivent être vérifiés
par rapport à fichier_à_hacher. Le fichier est
haché avec l’algorithme de signature de message
indiqué dans le jeton. Les options -digest et
-queryfile ne doivent pas être indiquées avec cette
option. (Facultatif)
- -digest octets_sign
- La réponse ou le jeton doivent être vérifiés
par rapport à la signature de message indiquée par cette
option. Le nombre d'octets doit correspondre à l’algorithme
de signature de message indiqué dans le jeton. Les options
-data et -queryfile ne doivent pas être
indiquées avec cette option. (Facultatif)
- -queryfile demande.tsq
- La demande originale d’horodatage au format DER. Les options
-data et -queryfile ne doivent pas être
indiquées avec cette option. (Facultatif)
- -in réponse.tsr
- La réponse d'horodatage à vérifier au format DER.
(Obligatoire)
- -token_in
- Cet indicateur peut être utilisé avec l'option -in et
indique que l'entrée est un jeton d'horodatage encodé DER
(ContentInfo) au lieu d'une réponse d'horodatage (TimeStampResp).
(Facultatif)
- -CApath chemin_cert_confiance
- Le nom du répertoire contenant les certificats de
l’autorité de confiance du client. Consultez l'option
similaire de verify(1) pour plus de précisions. Soit cette
option, soit -CAfile doit être indiquée.
(Facultatif)
- -CAfile certs_confiance.pem
- Le nom du fichier contenant un ensemble de certificats autosignés
de l’autorité de confiance au format PEM. Consultez l'option
similaire de verify(1) pour plus de précisions. Soit cette
option, soit -CApath doit être indiquée.
(Facultatif)
- -untrusted fichier_cert.pem
- Ensemble de certificats supplémentaires qui ne sont pas de
confiance au format PEM pouvant être nécessaires lors de la
construction de la chaîne de certificats d'un certificat de
signature de la TSA. Ce fichier doit contenir le certificat de signature
TSA et tous les certificats d’autorité intermédiaires
sauf si la réponse les inclut. (Facultatif)
OPTIONS DU FICHIER DE CONFIGURATION¶
Les commandes
-query et
-reply utilisent un fichier de
configuration défini par la variable d'environnement
OPENSSL_CONF. Consultez
config(5) pour une description
générale de la syntaxe du fichier de configuration. La commande
-query n’utilise que la section des noms symboliques
d’OID et peut fonctionner sans elle. Cependant, la commande
-reply a besoin du fichier de configuration pour fonctionner.
Quand une option de ligne de commande est équivalente à une
variable, l'option est toujours prioritaire sur les paramètres du
fichier de configuration.
- Section tsa, default_tsa
- C’est la section principale, qui indique le nom d’une autre
section contenant toutes les options pour la commande -reply. Cette
section par défaut peut être remplacée par
l’option -section en ligne de commande. (Facultatif)
- oid_file
- Consultez ca(1) pour la description. (Facultatif)
- oid_section
- Consultez ca(1) pour la description. (Facultatif)
- RANDFILE
- Consultez ca(1) pour la description. (Facultatif)
- serial
- Le nom du fichier contenant le numéro de série
hexadécimal de la dernière réponse
d’horodatage créée. Ce nombre est
incrémenté de 1 pour chaque réponse. Si le fichier
n'existe pas au moment de la création de réponse d'un
nouveau fichier, un nouveau est créé avec le numéro
de série 1. (Obligatoire)
- crypto_device
- Indiquer le moteur OpenSSL qui sera défini par défaut pour
tous les algorithmes disponibles. La valeur par défaut est
« builtin », vous pouvez indiquer d'autres
moteurs pris en charge par OpenSSL (par exemple, utiliser chil pour le HSM
nCipher). (Facultatif)
- signer_cert
- Certificat de signature TSA au format PEM. Identique à l'option
-signer en ligne de commande. (Facultatif)
- certs
- Un fichier contenant un ensemble de certificats encodés PEM qui
doivent être inclus dans la réponse. Identique à
l'option -chain en ligne de commande. (Facultatif)
- signer_key
- La clef privée de la TSA au format PEM. Identique à l'option
-inkey en ligne de commande. (Facultatif)
- default_policy
- La politique par défaut à utiliser quand la demande n'exige
pas de politique. Identique à -policy en ligne de commande.
(Facultatif)
- other_policies
- Liste des politiques, séparées par des virgules, qui sont
aussi acceptables par la TSA et utilisées seulement si la demande
indique explicitement l'une d’entre elles. (Facultatif)
- digests
- La liste des algorithmes de signature de message que la TSA accepte. Au
moins un algorithme doit être indiqué. (Obligatoire)
- accuracy
- La précision de la source de temps de la TSA en seconde,
milliseconde et microseconde. Par exemple secs:1, millisecs:500,
microsecs:100. Si l'un des composants est manquant, ce champ est
supposé nul. (Facultatif)
- clock_precision_digits
- Indiquer le nombre maximal de chiffres pour représenter la fraction
de seconde qui doit être incluse dans champ temporel. Les
zéros finaux doivent être supprimés, donc moins de
chiffres pourraient être présents ou aucune fraction de
seconde du tout. Pris en charge uniquement sur les plateformes UNIX. La
valeur maximale est 6, la valeur par défaut est 0.
(Facultatif)
- ordering
- Si cette option est « yes », les
réponses créées par cette TSA peuvent toujours
être ordonnées, même si la différence de temps
entre deux réponses est inférieure à la somme de
leurs précisions. « no » par
défaut. (Facultatif)
- tsa_name
- Si cette option est « yes », le nom d'objet de
la TSA doit être inclus dans le champ de noms TSA de la
réponse. « no » par défaut.
(Facultatif)
- ess_cert_id_chain
- Les objets SignedData créés par la TSA contiennent toujours
l'identifiant de certificat du certificat de signature dans un attribut
signé (consultez la RFC 2634, « Enhanced
Security Services »). Si cette option est
« yes » et que soit la variable certs,
soit l'option -chain est indiquée, les identifiants de
certificat de la chaîne seront également inclus dans
l’attribut SigningCertificate signé. Si cette variable est
« no », seul l'identifiant de certificat de
signature est inclus. « no » par
défaut. (Facultatif)
VARIABLES D'ENVIRONNEMENT¶
OPENSSL_CONF contient l'emplacement du fichier de configuration et peut
être modifiée par l'option
-config en ligne de commande.
EXEMPLES¶
Tous les exemples ci-dessous supposent que
OPENSSL_CONF est défini
vers un fichier de configuration approprié, comme dans le fichier
d'exemple de configuration openssl/apps/openssl.cnf.
Demande d’horodatage¶
Pour créer une demande d'horodatage pour design1.txt avec SHA-1 sans
nonce, avec la politique et sans certificat nécessaire dans la
réponse :
openssl ts -query -data design1.txt -no_nonce \
-out design1.tsq
Pour créer une demande d'horodatage similaire en indiquant explicitement
l’empreinte du message :
openssl ts -query -digest b7e5d3f93198b38379852f2c04e78d73abdd0f4b \
-no_nonce -out design1.tsq
Pour afficher le contenu de la requête précédente en format
lisible :
openssl ts -query -in design1.tsq -text
Pour créer une demande d'horodatage qui comprend la signature MD-5 de
design2.txt, demande le certificat du signataire et nonce, indique un
identifiant de politique (en supposant que le nom tsa_policy1 est
défini dans la section OID du fichier de configuration) :
openssl ts -query -data design2.txt -md5 \
-policy tsa_policy1 -cert -out design2.tsq
Réponse d’horodatage¶
Avant de créer une réponse, un certificat de signature doit
être créé pour la TSA qui contient l'extension
d’utilisation de clef étendue critique
timeStamping sans
aucune autre extension d'utilisation de clef. Vous pouvez ajouter la ligne
« extendedKeyUsage = critical,timeStamping »
à la section de certificat utilisateur du fichier de configuration pour
créer un certificat approprié. Consultez
req(1),
ca(1) et
x509(1) pour les instructions. Les exemples ci-dessous
supposent que cacert.pem contient le certificat de l’autorité de
certification, tsacert.pem est le certificat de signature émis par
cacert.pem et tsakey.pem est la clef privée de la TSA.
Pour créer une réponse d'horodatage pour une
requête :
openssl ts -reply -queryfile design1.tsq -inkey tsakey.pem \
-signer tsacert.pem -out design1.tsr
Pour utiliser les paramètres du fichier de configuration :
openssl ts -reply -queryfile design1.tsq -out design1.tsr
Pour afficher une réponse d’horodatage sur la sortie standard sous
forme lisible :
openssl ts -reply -in design1.tsr -text
Pour créer un jeton d'horodatage au lieu d’une réponse
d'horodatage :
openssl ts -reply -queryfile design1.tsq -out design1_token.der \
-token_out
Pour afficher un jeton d’horodatage sur la sortie standard sous forme
lisible :
openssl ts -reply -in design1_token.der -token_in -text -token_out
Pour extraire le jeton d'horodatage d'une réponse :
openssl ts -reply -in design1.tsr -out design1_token.der -token_out
Pour ajouter l’information d’état
« granted » (accordé) à un jeton
d'horodatage créant ainsi une réponse valable :
openssl ts -reply -in design1_token.der -token_in -out design1.tsr
Vérification d’horodatage¶
Pour vérifier une réponse d’horodatage par rapport à
une demande :
openssl ts -verify -queryfile design1.tsq -in design1.tsr \
-CAfile cacert.pem -untrusted tsacert.pem
Pour vérifier une réponse d’horodatage qui comprend la
chaîne de certificats :
openssl ts -verify -queryfile design2.tsq -in design2.tsr \
-CAfile cacert.pem
Pour vérifier un jeton d'horodatage par rapport au fichier de
données d'origine :
openssl ts -verify -data design2.txt -in design2.tsr \
-CAfile cacert.pem
Pour vérifier un jeton d'horodatage par rapport à une empreinte de
message :
openssl ts -verify -digest b7e5d3f93198b38379852f2c04e78d73abdd0f4b \
-in design2.tsr -CAfile cacert.pem
D’autres exemples sont aussi disponibles dans le répertoire
test.
BOGUES¶
Les bogues et suggestions peuvent être envoyés à Zoltan
Glozik
<zglozik@opentsa.org>. Une liste des problèmes
connus suit.
- — Pas de prise en charge d’horodatages par SMTP, mais
c’est assez facile de mettre en œuvre une TSA automatique
à base de courriers électroniques avec procmail(1) et
perl(1). La prise en charge du serveur HTTP est fournie sous forme
d'un module Apache séparé. La prise en charge de client HTTP
est assurée par tsget(1). Le protocole TCP/IP pur n'est pas
pris en charge.
- — Le fichier contenant le dernier numéro de série de
la TSA n'est pas verrouillé lorsqu'il est lu ou écrit.
C’est un problème si plusieurs instances d’
openssl(1) tentent de créer une réponse d'horodatage en
même temps. Ce n'est pas un problème si le module de serveur
Apache est utilisé : il fait un verrouillage correct.
- — Recherchez le mot « FIXME » dans les
fichiers source.
- — Le code source devrait vraiment être examiné par
quelqu'un d'autre.
- — Plus de tests sont nécessaires, seuls quelques tests de
base ont été effectués (consultez test/testtsa).
AUTEUR¶
Zoltan Glozik
<zglozik@opentsa.org>, projet OpenTSA (
<http://www.opentsa.org>)
VOIR AUSSI¶
tsget(1),
openssl(1),
req(1),
x509(1),
ca(1),
genrsa(1),
config(5)
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.