Les MANs Linux en français...
REQ
Section: OpenSSL (1)Updated: 0.9.6c
Index Retour au Menu Principal
NOM
req - utilitaire de certificats et de génération de certificats PKCS#10.SYNOPSIS
openssl req [-inform PEM|DER] [-outform PEM|DER] [-in nomfichier] [-passin arg] [-out nomfichier] [-passout arg] [-text] [-noout] [-verify] [-modulus] [-new] [-rand fichier(s)] [-newkey rsa:octets] [-newkey dsa:fichier] [-nodes] [-key nomfichier] [-keyform PEM|DER] [-keyout nomfichier] [-[md5|sha1|md2|mdc2]] [-config nomfichier] [-x509] [-days n] [-asn1-kludge] [-newhdr] [-extensions section] [-reqexts section]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 comme CAs racine par exemple.OPTIONS DE LA COMMANDE
- -inform DER|PEM
-
Ceci spécifie le format d'entrée. L'option DER utilise une version
encodée DER d'ASN1 compatible avec le PKCS#10.
La forme PEM est le format par défaut : il s'agit du format DER
encodée base 64 avec des lignes de pied de page et d'en-tête supplémentaires.
- -outform DER|PEM
-
Ceci spécifie le format de sortie, les options étant semblables à celles de l'option
-inform.
- -in nomfichier
-
Ceci spécifie le nom du fichier d'entrée à partir duquel la demande est lue ou l'entrée
standard par défaut si cette option n'est pas spécifiée. Une demande est uniquement lue
si les options de création (-new et -newkey) ne sont pas spécifiées.
- -passin arg
-
La source de mot de passe d'entrée. Pour plus d'informations concernant le format
de l'arg, référez-vous à la section ARGUMENTS DE MOT
DE PASSE d'openssl (1).
- -out nomfichier
-
Ceci spécifie le nom de fichier de sortie ou la sortie standard par défaut.
- -passout arg
-
La source de mot de passe pour le fichier de sortie. Pour plus d'informations concernant
le format de l'arg, référez-vous à la section ARGUMENTS DE MOT
DE PASSE d'openssl (1).
- -text
-
Affiche la demande de certificat en plein texte.
- -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 clé publique contenue dans la demande.
- -verify
-
Vérifie la signature lors de la demande.
- -new
-
Cette option génère une nouvelle demande de certificats. Il sera demandé à l'utilisateur de
fournir les valeurs de champs nécessaires. Ces champs demandés sont spécifiés ainsi
que leur valeurs maximales et minimales sont spécifiées dans le fichier de configuration
ainsi que dans les extensions.
Si l'option -key n'est pas utilisée, une nouvelle clé privée RSA sera générée en utilisant l'information du fichier de configuration.
- -rand fichier(s)
-
Un ou plusieurs fichiers contenant des données aléatoires utilisées pour initialiser
le générateur de nombres pseudo-aléatoire, ou un socket EGD (cf RAND_egd(3)).
Plusieurs fichiers peuvent être spécifiés en utilisant un caractère séparateur
dépendant du système d'exploitation : ; pour MS-Windows, , pour
OpenVMS, et : pour tous les autres.
- -newkey arg
-
Cette option crée une nouvelle demande de certificat et une nouvelle clé privée.
L'argument est l'une des deux formes suivantes : rsa:nombrebits, où
nombrebits est le nombre de bits, génère une clé RSA de taille nombrebits,
dsa:nomfichier génère une clé DSA utilisant les paramètres de nomfichier
- -key nomfichier
-
Ceci spécifie le fichier de clé privée à lire. Des fichiers au format PEM
contenant des clés privées PKCS#8 sont également acceptés.
- -keyform PEM|DER
-
Le format de la clé privée spécifiée avec l'option -key. PEM est le défaut.
- -keyout nomfichier
-
Ceci donne le nom de fichier où la clé privée créée sera écrite. Par défaut, le nom
spécifié par le fichier de configuration est utilisé.
- -nodes
-
Avec cette option, si une clé privée est créée, elle ne sera pas encodée.
- -[md5|sha1|md2|mdc2]
-
Ceci spécifie l'algorithme de signature à appliquer à la demande. Si présente,
cette option prévaut à celle donnée dans le fichier de configuration. Les demandes
DSA utilisent toujours SHA1.
- -config nomfichier
-
Ceci permet d'utiliser un fichier de configuration alternatif, à la place de celui
spécifié lors de la compilation ou avec la variable d'environnement OPENSSL_CONF.
- -x509
-
Cette option génère un certificat auto-signé à la place d'une demande de certificat.
Elle est utilisé typiquement pour générer des certificats de test ou tout CA
auto-signé racine. Les extensions à ajouter au certificat, s'il y en a, sont spécifiées
dans le fichier de configuration.
- -days n
-
Lorsque l'option -x509 est utilisée, ceci spécifie le nombre de jours pour lequel le
certificat sera certifié. La valeur par défaut est 30 jours.
- -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. Ceci permet d'utiliser
des sections différentes du même fichier de configuration servant à des propos variés.
- -asn1-kludge
-
Par défaut, la commande req génère des demandes de certificats sans attributs dans
un format PKCS#10 valide. Toutefois, certains CA acceptent uniquement des demandes
sans attributs sous une forme invalide qui est produite avec cette option.
Plus précisément, les Attributs d'une demande de certificat PKCS#10 sont définies comme Attributs SET OF. Ils ne sont pas OPTIONAL, ainsi, si aucun attribut n'est présent, une entrée SET OF devrait le signaler. La forme invalide n'inclut pas cette entrée alors que la forme valide le fait.
Notons que très peu de CAs nécessitent encore l'usage de cette option.
- -newhdr
- Ajoute le mot NEW aux lignes d'en-tête et de pied de page du fichier PEM du fichier de sortie. Certains logiciels (Netscape certificate server) et certains CAs ont besoin de ceci.
FORMAT DU FICHIER DE CONFIGURATION
Les options de configuration sont spécifié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 (p.e. req), la section initiale ou la section par défaut 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 clé privée d'entrée (si présent)
et pour le fichier de clé privée de sortie (si on en crée une). Les options
de ligne de commande passin et passout remplacent les valeurs
du fichier de configuration.
- default_bits
-
Ceci spécifie la taille de clé par défaut en bits. Si elle n'est pas spécifiée,
la valeur 512 est utilisée. Elle est utilisée lors de l'emploi de l'option
-new. Elle peut être écrasée avec l'option -newkey.
- default_keyfile
-
Ceci est le nom de fichier par défaut pour la clé privée. Si non spécifiée,
la clé sera écrite vers la sortie standard. Ceci peut être remplacé par l'option
-keyout.
- oid_file
-
Ceci spécifie un fichier contenant des IDENTIFIANTS D'OBJET
supplémentaires. Chaque ligne du fichier consiste en la forme numérique de l'identifiant
d'objet, suivi d'une espace puis le libellé court, suivi d'une espace et finalement le libellé
long.
- oid_section
-
Ceci spécifie une section du fichier de configuration contenant des identifiants d'objet
supplémentaires. Chaque ligne devrait comprendre le libellé court suivi d'un signe =
puis la forme numérique. Le libellé long est identique au libellé court avec cette option.
- RANDFILE
-
Ceci spécifie le fichier où les informations de la racine des nombres aléatoires sont
lues et écrites, ou un socket EGD (cf RAND_egd(3)). Elles sont utilisées pour la
génération de clé privée.
- encrypt_key
-
Si ceci vaut no, lors de la génération d'une clé privée, elle n'est pas encodée.
Ceci équivaut à l'option -nodes de la ligne de commande. Pour assurer la
compatibilité, encrypt_rsa_key est une option équivalente.
- default_md
-
Cette option spécifie l'algorithme de signature à employer. Les valeurs possibles
comprennent md5 sha1 mdc2. Si cette option n'est pas présente, MD5
est prise. 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 qu'est la valeur par défaut qui utilise PrintableStrings, T61Strings et BMPStrings. Si la valeur pkix est spécifiée, uniquement PrintableStrings et BMPStrings seront utilisés. Ceci suit la recommandation PKIX dansRFC2459. Si l'option utf8only est employée, alors uniquement les UTF8Strings sont employés : ceci est la recommandation PKIX dansRFC2459 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
-
Ceci spécifie la section du fichier de configuration contenant une liste d'extensions
à ajouter à la demande de certificat. Elle peut être remplacé par l'option -reqexts
de la ligne de commande.
- x509_extensions
-
Ceci spécifie la section du fichier de configuration contenant une liste d'extensions
à ajouter au certificat généré avec l'option -x509. Elle peut être remplacée par
l'option -extensions de la ligne de commande.
- prompt
-
Si ceci vaut no, aucun champ du certificat ne sera demandé à l'utilisateur
et les valeurs du fichier de configuration sont prises d'office. Ceci change également
le format attendu des sections distinguished_name et attributes.
- attributes
-
Ceci spécifie 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 certains CAs.
- distinguished_name
- Ceci spécifie la section contenant les champs de nom distingué à demander lors d'une génération de certificat ou d'une demande de certificat. Le format est décrit dans la section suivante.
FORMAT DES SECTIONS DE NOM DISTINGUÉ ET D'ATTRIBUT
Il y a deux formats différents pour les sections de nom distingué et d'attribut. Lorsque l'option prompt vaut no, alors ces sections contiennent uniquement les noms de champ et leurs valeurs : par exemple
CN=Mon nom OU=Mon organisation emailAddress=quelquun@quelquepart.orgCeci permet aux programmes externes (p.ex. d'interfaçage graphique) 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'invité de commandes. Ceci se présente sous la forme suivante :
nomChamp="prompt" 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 ``prompt'' est affichée lors de la demande à l'utilisateur. Si l'utilisateur ne saisit rien, alors la valeur par défaut, ``nomChamp_default'', est prise, si présente, ou alors le champs est omis. Un champ peut toujours être omis 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. Ceci 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é avec OpenSSL et incluent les libellés longs usuels comme commonName, countryName, localityName, organizationName,organizationUnitName, stateOrPrivinceName. 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
Examine et vérifie une demande de certificat:
openssl req -in req.pem -text -verify -nooutCrée une clé privée et génère la demande de certificat correspondante:
openssl genrsa -out key.pem 1024 openssl req -new -key key.pem -out req.pemLa même chose en utilisant uniquement req
openssl req -newkey rsa:1024 -keyout key.pem -out req.pemGénérer un certificat auto-signé racine :
openssl req -x509 -newkey rsa:1024 -keyout key.pem -out req.pemExemple d'un fichier spécifié avec l'option oid_file :
1.2.3.4 libelleCourt Un libellé long 1.2.3.6 autreLibelle Un autre libellé longExemple d'une section oid_section utilisant l'expansion de variables :
testoid1=1.2.3.5 testoid2=${testoid1}.6Fichier de configuration type demandant les valeur de champ :
[ req ] default_bits = 1024 default_keyfile = privkey.pem distinguished_name = req_distinguished_name attributes = req_attributes x509_extensions = v3_ca
dirstring_type = nobmp
[ req_distinguished_name ] 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 de l'unité dans l'organisation (par exemple, la section)
commonName = Nom commun (par exemple, VOTRE nom) commonName_max = 64
emailAddress = Adresse mél emailAddress_max = 40
[ req_attributes ] challengePassword = Un mot de passe challengePassword_min = 4 challengePassword_max = 20
[ v3_ca ]
subjectKeyIdentifier=hash authorityKeyIdentifier=keyid:always,issuer:always basicConstraints = CA:trueConfiguration type contenant tous les champs :
RANDFILE = $ENV::HOME/.rnd
[ req ] default_bits = 1024 default_keyfile = fichiercle.pem distinguished_name = req_noms_distingues attributes = req_attributs prompt = no output_password = monpass
[ req_noms_distingues ] C = FR ST = Département de test L = Lieu de test O = Nom organisation OU = Nom de l'Unité CN = Nom commun emailAddress = test@email.address
[ req_attributs ] challengePassword = Un mot de passe
NOTES
Les lignes d'en-tête et de pied de page au 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 clé (signature ou général) et tous les OIDs entrées par le script dans une extension extendedKeyUsage.
DIAGNOSTICS
Les mesages suivants posent problème fréquemment :
Using configuration from /some/path/openssl.cnf Unable to load config infoCeci est suivi peu après par :
unable to find 'distinguished_name' in config problems making Certificate RequestLe 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 dépendent pas d'un fichier de configuration, alors son utilisation n'est pas renforcée. La génération de certificats ou de demandes, au contraire, nécessitent un fichier de configuration. Ceci peut être considéré comme un bogue.
Un autre message portant à confusion est :
Attributes: a0:00Ceci 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). Si vous voyez uniquement
Attributes:alors le SET OF manque et l'encodage ainsi invalide techniquement. Référez-vous à la description de l'option -asn1-kludge pour plus d'information.
VARIABLES D'ENVIRONNEMENT
La variable OPENSSL_CONF si définie permet un fichier de configuration alternatif. Il sera écrasé avec l'option -config de la ligne de commande si elle est présente. Pour des raison de compatibilité, la variable SSLEAY_CONF sert à ce même propos bien que son utilisation soit déconseillé.BOGUES
La gestion des T61Strings (ou TeletexStrings) est cassée : ils sont traités effectivement comme ISO-8859-1 (Latin 1), Netscape et MSIE ont un comportement similaire. Ceci 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 le format invalide des T61Strings actuellement.
La demande à l'invité n'est pas très présentable et peu fonctionnelle. 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 par exemple une adresse mél dans le subjectAltName devraient être données par l'utilisateur.
VOIR AUSSI
x509(1), ca(1), genrsa(1), gendsa(1), config(5)
Index
- NOM
- SYNOPSIS
- DESCRIPTION
- OPTIONS DE LA COMMANDE
- FORMAT DU FICHIER DE CONFIGURATION
- FORMAT DES SECTIONS DE NOM DISTINGUÉ ET D'ATTRIBUT
- EXEMPLES
- NOTES
- DIAGNOSTICS
- VARIABLES D'ENVIRONNEMENT
- BOGUES
- VOIR AUSSI
Time: 19:01:06 GMT, December 19, 2004