NOM¶
req - Utilitaire de génération de certificats et de demandes de
certificat PKCS#10
SYNOPSIS¶
openssl req [
-inform PEM|
DER]
[
-outform PEM|
DER] [
-in nom_fichier]
[
-passin param] [
-out nom_fichier] [
-passout param] [
-text] [
-pubkey] [
-noout]
[
-verify] [
-modulus] [
-new] [
-rand
fichier(s)] [
-newkey rsa:bits] [
-newkey
alg :fichier] [
-nodes] [
-key
nom_fichier] [
-keyform PEM|
DER] [
-keyout
nom_fichier] [
-keygen_engine id]
[
-[
condensé]] [
-config nom_fichier]
[
-subj param] [
-multivalue-rdn] [
-x509]
[
-days n] [
-set_serial n] [
-asn1-kludge]
[
-no-asn1-kludge][
-newhdr] [
-extensions section]
[
-reqexts section] [
-utf8] [
-nameopt]
[
-reqopt] [
-subject] [
-subj param]
[
-batch] [
-verbose] [
-engine id]
DESCRIPTION¶
La commande
req crée et traite des demandes de certificats au
format PKCS#10. En plus, elle peut créer des certificats
autosignés servant par exemple de certificats racine d'autorité
de certification.
OPTIONS DE LA COMMANDE¶
- -inform DER|PEM
- Indiquer le format d'entrée. L'option DER utilise l'encodage
ASN1 DER compatible avec le format PKCS#10. La forme PEM est le
format par défaut : il s'agit du format DER
encodé en base64 avec des lignes supplémentaires au
début et à la fin.
- -outform DER|PEM
- Indiquer le format de sortie. Les options ont la même signification
que pour l'option -inform.
- -in nom_fichier
- Indiquer le nom du fichier d'entrée à partir duquel la
demande est lue. Par défaut, l'entrée standard sera lue si
cette option n'est pas indiquée. Une demande est uniquement lue si
les options de création ( -new et -newkey) ne sont
pas indiquées.
- -passin param
- La source de mot de passe d'entrée. Pour plus de renseignements sur
le format de param, consultez la section PARAMÈTRES DE
PHRASE SECRÈTE d' openssl(1).
- -out nom_fichier
- Indiquer le nom du fichier de sortie. La sortie standard est
utilisée par défaut.
- -passout param
- La source de mot de passe pour le fichier de sortie. Pour plus de
renseignements sur le format de param, consultez la section
PARAMÈTRES DE PHRASE SECRÈTE
d'openssl(1).
- -text
- Afficher la demande de certificat au format texte.
- -subject
- Afficher l'objet de la demande (ou l'objet du certificat si -x509
est indiqué)
- -pubkey
- Afficher la clef publique.
- -noout
- Cette option empêche la sortie de la version encodée de la
demande.
- -modulus
- Cette option affiche la valeur du modulo de la clef publique contenue dans
la demande.
- -verify
- Vérifier la signature de la demande.
- -new
- Cette option génère une nouvelle demande de certificat. Il
sera demandé à l'utilisateur de fournir les valeurs des
champs nécessaires. Ces champs demandés ainsi que leurs
valeurs maximales et minimales sont indiqués dans le fichier de
configuration ainsi que dans les extensions.
Si l'option -key n'est pas utilisée, une nouvelle clef
privée RSA sera générée en utilisant
l'information du fichier de configuration.
- -subj param
- Remplacer le champ d'objet de la demande d'entrée par les
données indiquées et afficher la demande modifiée.
param doit être formaté comme
/type0=
valeur0/type1=valeur1
/type2 =... où les caractères peuvent
être protégés par « \ »
(barre oblique inversée), aucun espace n'est ignoré.
- -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.
- -newkey param
- Cette option crée une nouvelle demande de certificat et une
nouvelle clef privée. Le paramètre utilise l'une des formes
suivantes : rsa:nombre_bits, où
nombre_bits est le nombre de bits, génère une clef
RSA de taille nombre_bits. Si nombre_bits n'est pas
indiqué, c'est-à-dire que -newkey rsa est
utilisé, la taille de clef par défaut, indiquée dans
le fichier de configuration, est utilisée.
Tous les autres algorithmes gèrent la forme -newkey
alg:fichier, où fichier peut
être un fichier de paramètres d'algorithme,
créé par la commande genpkey -genparam ou un
certificat X.509 pour une clef avec l'algorithme approprié.
param:fichier génère une clef en utilisant le
fichier de paramètres ou de certificats, l'algorithme est
déterminé par les paramètres.
alg:fichier utilise l' algorithme
indiqué et le fichier de paramètres. Les deux
algorithmes doivent correspondre sinon cela produit une erreur. alg
n'indique que l'algorithme, et les paramètres, si
nécessaires, doivent être indiqués avec l'option
-pkeyopt.
dsa:fichier génère une clef DSA utilisant les
paramètres du fichier fichier. ec:fichier
génère une clef EC (utilisable à la fois avec les
algorithmes ECDSA ou ECDH), gost2001:fichier
génère une clef GOST R 34.10-2001 (nécessite que le
moteur ccgost soit configuré dans le fichier de
configuration). Si seul gost2001 est indiqué, un jeu de
paramètres devrait être indiqué par -pkeyopt
jeu_param:X
- -pkeyopt opt:valeur
- Définir l'option opt de l'algorithme à clef publique
à valeur. L’ensemble exact d'options prises en charge
dépend de l'algorithme à clef publique utilisé et de
son implémentation. Consultez OPTIONS DE
GÉNÉRATION DE CLEF dans la page de manuel
genpkey(1) pour plus de précisions.
- -key nom_fichier
- Indiquer le fichier de clef privée à lire. Les clefs
privées au format PKCS#8 sont aussi acceptées pour les
fichiers au format PEM.
- -keyform PEM|DER
- Le format du fichier de la clef privée indiqué avec l'option
-key. PEM est le format par défaut.
- -keyout nom_fichier
- Donner le nom de fichier où la clef privée
créée sera écrite. Par défaut, le nom
indiqué par le fichier de configuration est utilisé.
- -nodes
- Avec cette option, si une clef privée est créée, elle
ne sera pas chiffrée.
- -[condensé]
- Indiquer le type de condensé à utiliser pour signer la
demande (comme -md5 ou -sha1). Si elle est présente,
cette option prévaut à celle donnée dans le fichier
de configuration.
Certains algorithmes à clef publique pourraient écraser ce
choix. Par exemple, les signatures DSA utilisent toujours SHA1, les
signatures GOST R 34.10 utilisent toujours GOST R 34.11-94 (
-md_gost94).
- -config nom_fichier
- Permettre d'utiliser un fichier de configuration alternatif, à la
place de celui indiqué lors de la compilation ou avec la variable
d'environnement OPENSSL_CONF.
- -subj param
- Définir le nom de sujet pour les nouvelles demandes ou remplace le
nom de sujet lors du traitement d'une demande. param doit
être formaté comme
/type0=valeur0
/type1=valeur1 /type2=...
où les caractères peuvent être protégés
par « \ » (barre oblique inversée),
aucun espace n'est ignoré.
- -multivalue-rdn
- Cette option force l'argument de -subj à être
interprété avec une prise en charge complète des RDN
multivaleurs. Exemple :
/DC=org/DC=OpenSSL/DC=users/UID=123456+CN=Jean Dupont
Si -multi-rdn est utilisée, alors la valeur de l'UID est
123456+CN=Jean Dupont.
- -x509
- Cette option génère un certificat autosigné à
la place d'une demande de certificat. Elle est utilisée typiquement
pour générer des certificats de test ou le certificat
autosigné racine d'une autorité de certification. Les
extensions à ajouter au certificat, s'il y en a, sont
indiquées dans le fichier de configuration. À moins
d'être précisé par l'option set_serial, le
numéro de série sera 0.
- -days n
- Lorsque l'option -x509 est utilisée, elle indique le nombre
de jours pendant lesquels le certificat sera certifié. La valeur
par défaut est 30 jours.
- -set_serial n
- Numéro de série à utiliser lors de l'affichage d'un
certificat autosigné. Cela peut être indiqué comme
une valeur décimale, ou hexadécimale si elle est
précédée par 0x. Des numéros de
série négatifs peuvent être utilisés mais ce
n'est pas conseillé.
- -extensions section
- -reqexts section
- Ces options précisent des sections alternatives d'extension de
certificat (si l'option -x509 est présente), ou de demandes
de certificat à inclure. Cela permet d'utiliser des sections
différentes du même fichier de configuration servant
à des propos variés.
- -utf8
- Cette option indique que les valeurs des champs doivent être
interprétées comme des chaînes UTF-8. Par
défaut, elles sont interprétées comme des
chaînes ASCII. Cela signifie que les valeurs des champs, qu'elles
soient demandées sur le terminal ou fournies par le fichier de
configuration, doivent être des chaînes UTF-8 valables.
- -nameopt option
- Option qui détermine la façon d'afficher les noms de sujet
ou d'émetteur. L'argument option peut être une seule
option ou plusieurs options séparées par des virgules. Le
paramètre -nameopt peut aussi être utilisé
plus d'une fois pour définir plusieurs options. Consultez la page
de manuel x509(1) pour plus de précisions.
- -reqopt
- Personnaliser le format de sortie utilisé avec -text.
L'argument option peut être une seule option ou plusieurs
options séparées par des virgules.
Consultez la discussion sur l'option -certopt dans la page de manuel
de la commande x509.
- -asn1-kludge
- Par défaut, la commande req génère des
demandes de certificats sans attributs dans un format PKCS#10 valable.
Toutefois, certaines autorités de certification n'acceptent que des
demandes sans attributs sous une forme non valable qui est produite avec
cette option.
Plus précisément, les attributs d'une demande de certificat
PKCS#10 sont définies comme un ensemble d'attributs ( SET OF
Attribute). Ils ne sont pas de type OPTIONAL, ainsi, si aucun
attribut n'est présent, une entrée vide SET OF
devrait le signaler. La forme non valable n'inclut pas cette entrée
alors que la forme valable le fait.
Remarquez que très peu d'autorités de certification
nécessitent encore l'utilisation de cette option.
- -no-asn1-kludge
- Inverser l'effet de -asn1-kludge.
- -newhdr
- Ajouter le mot NEW aux lignes de début et de fin du fichier
PEM de la demande de certificat créée. Certains logiciels
(Netscape certificate server) et certaines autorités de
certification en ont besoin.
- -batch
- Mode non interactif.
- -verbose
- Afficher des précisions supplémentaires à propos des
opérations effectuées.
- -engine id
- Indiquer un moteur (en utilisant son identifiant unique id) forcera
req à 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.
- -keygen_engine id
- Indiquer un moteur (en utilisant son identifiant unique id)
à utiliser pour les opérations de génération
de clef.
Les options de configuration sont indiquées dans la section
req du
fichier de configuration. Comme avec tous les fichiers de configuration, si
aucune valeur n'est donnée dans la section correspondante
(c'est-à-dire
req), la section initiale sans nom ou la section
default est également parcourue.
Les options disponibles sont décrites en détail ci-dessous.
- input_password output_password
- Les mots de passe pour le fichier de clef privée d'entrée
(si présent) et pour le fichier de clef privée de sortie (si
une clef est créée). Les options de ligne de commande
passin et passout remplacent les valeurs du fichier de
configuration.
- default_bits
- Indique la taille par défaut des clefs, en bits. Si elle n'est pas
indiquée, la valeur 512 est utilisée. Elle est
utilisée lors de l'emploi de l'option -new. Elle peut
être écrasée par l'option -newkey.
- default_keyfile
- C'est le nom de fichier par défaut où la clef privée
sera écrite. Si elle n'est pas indiquée, la clef sera
écrite sur la sortie standard. Cela peut être
écrasé par l'option -keyout.
- oid_file
- Indique le fichier contenant des IDENTIFIANTS D'OBJET
supplémentaires. Chaque ligne est constituée de la forme
numérique de l'identifiant d'objet suivie d'un espace puis du
libellé court suivi à son tour d'un espace et finalement du
libellé long.
- oid_section
- Indique une section du fichier de configuration contenant d'autres
identifiants d'objet. Chaque ligne est constituée du libellé
court de l'identifiant d'objet suivi de = et de la forme
numérique. Le libellé court et le libellé long sont
identiques quand cette option est utilisée.
- RANDFILE
- Indique le fichier où les graines pour les nombres
aléatoires sont lues et écrites, ou une socket EGD
(consultez RAND_egd(3)). C'est utilisé pour la
génération de clef privée.
- encrypt_key
- Si cela vaut no, lors de la génération d'une clef
privée, elle n'est pas chiffrée. Cela équivaut
à l'option -nodes de la ligne de commande. Pour assurer la
compatibilité, encrypt_rsa_key est une option
équivalente.
- default_md
- Cette option indique l'algorithme à utiliser pour les
condensés. md5, sha1 et mdc2 font partie des
valeurs possibles. Si cette option n'est pas présente, MD5 sera
utilisé. Cette option peut être écrasée avec
l'option correspondante de la ligne de commande.
- string_mask
- Cette option masque l'utilisation de certains types de chaîne de
caractères dans certains champs. La plupart des utilisateurs
n'auront pas besoin de modifier cette option.
Elle peut se voir affecter diverses valeurs : default qui est
la valeur par défaut et qui utilise PrintableStrings, T61Strings et
BMPStrings. Si la valeur pkix est indiquée, uniquement
PrintableStrings et BMPStrings seront utilisées. C'est conforme
à la recommandation PKIX dans la RFC 2459. Si l'option
utf8only est employée, alors seules les UTF8Strings sont
employées : c'est la recommandation PKIX dans la
RFC 2459 pour après 2003. Finalement l'option nombstr
utilise seulement PrintableStrings et T61Strings : certains
logiciels ont des problèmes avec les BMPStrings et les UTF8Strings,
en particulier Netscape.
- req_extensions
- Indique la section du fichier de configuration contenant une liste
d'extensions à ajouter à la demande de certificat. Elle peut
être remplacée par l'option -reqexts de la ligne de
commande. Consultez la page de manuel x509v3_config(5) pour obtenir
des précisions sur le format de la section d'extensions.
- x509_extensions
- Indique la section du fichier de configuration contenant une liste
d'extensions à ajouter aux certificats générés
avec l'option -x509. Elle peut être remplacée par
l'option -extensions de la ligne de commande.
- prompt
- Si cela vaut no, aucun champ du certificat ne sera demandé
à l'utilisateur et les valeurs du fichier de configuration sont
prises d'office. Cela change également le format attendu des
sections distinguished_name et attributes.
- utf8
- Si définie à yes, alors les valeurs des champs
doivent être interprétées comme des chaînes
UTF-8. Par défaut, elles sont interprétées comme des
chaînes ASCII. Cela signifie que les valeurs des champs, qu'elles
soient demandées sur le terminal ou fournies par le fichier de
configuration, doivent être des chaînes UTF-8 valables.
- attributes
- Indique la section contenant les attributs pour les demandes : son
format est identique à celui de la section
distinguished_name. Typiquement, ces attributs contiennent les
types challengePassword et unstructuredName. Ils sont actuellement
ignorés par les utilitaires de signature d'OpenSSL mais peuvent
être requis par certaines autorités de certification.
- distinguished_name
- Indique la section contenant les champs des noms distinctifs
(« distinguished name ») à demander
lors d'une génération de certificat ou d'une demande de
certificat. Le format est décrit dans la section suivante.
Il y a deux formats différents pour les sections de nom distinctif et
d'attribut. Lorsque l'option
prompt vaut
no, alors ces sections
contiennent uniquement les noms des champs et leurs valeurs. Par
exemple :
CN=Mon Nom
OU=Mon Organisation
emailAddress=quelqu_un@example.org
Cela permet aux programmes externes (par exemple des interfaces graphiques) de
générer un fichier modèle à passer à
req. Un exemple de ce type de fichier de configuration se trouve dans
la section
EXEMPLES.
Dans l'absence de l'option
prompt ou si celle-ci ne vaut pas
no,
le fichier contient des informations pour la demande à l'invite de
commandes. Cela se présente sous la forme suivante :
nomChamp="invite"
nomChamp_default="Valeur du champ par défaut"
nomChamp_min= 2
nomChamp_max= 4
« nomChamp » est le nom du champ à utiliser,
par exemple commonName (ou CN, nom commun). La chaîne
« invite » est affichée lors de la demande
à l'utilisateur. Si l'utilisateur ne saisit rien, alors la valeur par
défaut, « nomChamp_default », est
utilisée ; en l'absence de valeur par défaut, le champ
est omis. Un champ peut toujours être omis, en présence de
valeur par défaut, en saisissant uniquement le caractère
« . ».
Le nombre de caractères saisis doit être entre les limites de
nomChamp_min et nomChamp_max : il peut y avoir d'autres contraintes
basées sur le champ utilisé (par exemple, countryName doit
toujours avoir une longueur de deux et doit entrer dans un PrintableString).
Certains champs (comme organizationName) peuvent être utilisés
plus d'une fois dans un DN. Cela pose problème car dans les fichiers de
configuration, le même nom de champ ne sera pas pris en compte à
deux reprises. Pour éviter ce problème, si le nomChamp contient
des caractères suivi d'un point (« . »),
ils seront ignorés. Ainsi, par exemple, une deuxième
entrée pour organizationName peut être entrée en
l'appelant « 1.organizationName ».
Les noms de champ permis sont les libellés longs ou courts de tous les
identifiants d'objet. Ceux-ci sont compilés avec OpenSSL et incluent
les libellés longs usuels comme commonName, countryName, localityName,
organizationName, organizationUnitName, stateOrProvinceName. En plus,
emailAddress est présent tout comme name, surname, givenName, initials
et dnQualifier.
Des identifiants d'objet supplémentaires peuvent être
définis dans un fichier (
oid_file) ou une section
(
oid_section) dans le fichier de configuration. Tous les champs
supplémentaires sont traités comme des DirectoryString.
EXEMPLES¶
Examiner et vérifier une demande de certificat :
openssl req -in dem.pem -text -verify -noout
Créer une clef privée et générer la demande de
certificat correspondante :
openssl genrsa -out clef.pem 1024
openssl req -new -key clef.pem -out dem.pem
La même chose en utilisant uniquement req :
openssl req -newkey rsa:1024 -keyout clef.pem -out dem.pem
Générer un certificat racine autosigné :
openssl req -x509 -newkey rsa:1024 -keyout clef.pem -out clef.pem
Exemple d'un fichier indiqué avec l'option
oid_file :
1.2.3.4 nomCourt Un nom plus long
1.2.3.6 autreNom Autre nom plus long
Exemple d'une section pouvant être référencée par
oid_section en utilisant l'expansion de variables :
testoid1=1.2.3.5
testoid2=${testoid1}.6
Fichier de configuration type demandant les valeurs des champs :
[ req ]
default_bits = 1024
default_keyfile = clefpriv.pem
distinguished_name = dem_noms_distinctifs
attributes = dem_attributs
x509_extensions = v3_ca
dirstring_type = nobmp
[ dem_noms_distinctifs ]
countryName = Nom du pays (code 2 lettres )
countryName_default = FR
countryName_min = 2
countryName_max = 2
localityName = Nom du lieu (par exemple, la ville)
organizationalUnitName = Nom d'unité dans l'organisation (sec.)
commonName = Nom commun (par exemple, VOTRE nom)
commonName_max = 64
emailAddress = Adresse électronique
emailAddress_max = 40
[ dem_attributs ]
challengePassword = Un mot de passe
challengePassword_min = 4
challengePassword_max = 20
[ v3_ca ]
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid:always,issuer:always
basicConstraints = CA:true
Configuration type contenant toutes les valeurs des champs :
RANDFILE = $ENV::HOME/.rnd
[ req ]
default_bits = 1024
default_keyfile = fichier_clef.pem
distinguished_name = dem_noms_distintifs
attributes = dem_attributs
prompt = no
output_password = mon_pass
[ dem_noms_distinctifs ]
C = FR
ST = Département de test
L = Lieu de test
O = Nom de l'organisation
OU = Nom de l'unité dans l'organisation
CN = Nom commun
emailAddress = test@adresse.electronique
[ dem_attributs ]
challengePassword = Un mot de passe
NOTES¶
Les lignes de début et de fin dans le format
PEM sont
normalement :
-----BEGIN CERTIFICATE REQUEST-----
-----END CERTIFICATE REQUEST-----
Certains logiciels (certaines versions de Netscape certificate server)
nécessitent à la place :
-----BEGIN NEW CERTIFICATE REQUEST-----
-----END NEW CERTIFICATE REQUEST-----
qui est produit avec l'option
-newhdr mais reste compatible autrement.
À l'entrée, les deux versions sont acceptées de
façon transparente.
Les demandes de certificat générées par
Xenroll avec
MSIE ont des extensions supplémentaires. Elles incluent une extension
keyUsage qui détermine le type de la clef (signature ou
général) et tous les OID supplémentaires entrés
par le script dans une extension extendedKeyUsage.
DIAGNOSTIC¶
Les messages suivants soulèvent souvent des interrogations :
Using configuration from /some/path/openssl.cnf
Unable to load config info
Qui est suivi peu après par :
unable to find 'distinguished_name' in config
problems making Certificate Request
Le premier message explique le tout : le fichier de configuration est
introuvable ! Certaines opérations (telle que la
vérification d'une demande de certificat) ne nécessitent pas de
fichier de configuration donc son utilisation n'est pas obligatoire. La
génération de certificats ou de demandes, au contraire,
nécessite un fichier de configuration. Cela peut être
considéré comme un bogue.
Un autre message portant à confusion est :
Attributes:
a0:00
C'est affiché lorsqu'aucun attribut n'est présent et que la
demande inclut la structure vide
SET OF correcte (dont l'encodage DER
est 0xa0 0x00). S'il n'y a que :
Attributes:
alors le
SET OF manque et l'encodage est techniquement incorrect.
Consultez la description de l'option
-asn1-kludge pour plus de
renseignements.
VARIABLES D'ENVIRONNEMENT¶
La variable
OPENSSL_CONF, si définie, permet d'indiquer un fichier
de configuration alternatif. Si l'option
-config de la ligne de
commande est présente, la variable d'environnement sera ignorée.
Pour des raisons de compatibilité, la variable
SSLEAY_CONF a la
même utilisation, mais son utilisation est déconseillée.
BOGUES¶
La gestion des T61Strings (ou TeletexStrings) par OpenSSL est
cassée : elles sont traitées effectivement comme des
chaînes ISO-8859-1 (Latin 1), Netscape et MSIE ont un comportement
similaire. Cela peut poser problème lorsque vous avez besoin de
caractères qui ne sont pas disponibles dans les PrintableStrings et que
vous ne voulez ou pouvez pas utiliser les BMPStrings.
La conséquence de cette gestion de T61String est que la seule
façon correcte de représenter des caractères
accentués dans OpenSSL est d'utiliser un BMPString :
malheureusement, Netscape ne les aime pas. Ainsi, pour utiliser les
caractères accentués avec Netscape et MSIE, vous devrez utiliser
actuellement le format incorrect des T61Strings.
La demande à l'invite de commande n'est pas très ergonomique. Vous
ne pouvez confirmer les saisies, et les extensions doivent être
définies de façon statique dans le fichier de configuration.
Quelques-unes, comme une adresse électronique dans le subjectAltName,
devraient être données par l'utilisateur.
VOIR AUSSI¶
x509(1),
ca(1),
genrsa(1),
gendsa(1),
config(5),
x509v3_config(5)
TRADUCTION¶
Cette page de manuel a été traduite par arne en 2002 et est
maintenue par 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.