NOM
x509v3_config − format de configuration d’extension de certificat X509 V3
DESCRIPTION
Plusieurs utilitaires d’OpenSSL peuvent ajouter des extensions à un certificat ou à une demande de certification se basant sur le contenu d’un fichier de configuration.
Typiquement, la requête contient une option pour indiquer une section d’extension. Chaque ligne de la section d’extension prend la forme :
extension_name=[critical,] extension_options
Si critical est présent, alors l’extension sera critique.
Le format de extension_options dépend de la valeur de extension_name.
Il existe quatre principaux types d’extension : les extensions de chaîne, les extensions multi-valeur, brut et les extensions arbitraire.
Les extensions de chaînes ont simplement une chaîne qui contient soit la valeur elle−même ou la façon dont elle est obtenue.
Par exemple :
nsComment="Ceci est un commentaire"
Les extensions multi-valeurs ont une forme courte et une forme longue. La forme courte est une liste de noms et de valeurs :
basicConstraints=critical,CA:true,pathlen:1
La forme longue permet aux valeurs d’être placées dans une section distincte :
basicConstraints=critical,@bs_section [bs_section] CA=true pathlen=1
Les deux formes sont équivalentes.
La syntaxe des extensions brut est régie par le code d’extension : elle peut par exemple contenir des données dans plusieurs sections. La syntaxe correcte à utiliser est définie par le code d’extension lui−même : consultez l’extension de politiques de certificat pour un exemple.
Si un type d’extension n’est pas pris en charge, alors la syntaxe d’extension arbitraire doit être utilisée, voir la section EXTENSIONS ARBITRAIRES pour plus de détails.
EXTENSIONS STANDARDS
Les sections suivantes décrivent chaque extension prise en charge dans le détail.
Restrictions
de bases.
Cela est une extension multi-valeur qui indique si un
certificat est un certificat de CA. Le
premier nom (obligatoire) est CA suivi
par TRUE ou
FALSE . Si CA
est TRUE , alors un nom pathlen
facultatif suivi d’une valeur non négative peut
être inclus.
Par exemple :
basicConstraints=CA:TRUE basicConstraints=CA:FALSE basicConstraints=critical,CA:TRUE, pathlen:0
Un certificat de CA doit inclure la valeur basicConstraints avec le champ CA à TRUE . Un certificat d’utilisateur final doit fixer soit CA à FALSE ou exclure l’extension entièrement. Certains logiciels peuvent nécessiter l’inclusion de basicConstraints avec CA à FALSE pour les certificats d’entité de fin.
Le paramètre pathlen indique le nombre maximal de CA qui peut apparaître en dessous de cet élément d’une chaîne. Donc, si vous avez une CA avec pathlen à zéro, elle peut être utilisée uniquement pour signer les certificats d’utilisateur final et non d’autres autorités de certification.
Utilisation
de clé.
«Key usage » est une extension
multi-valeur constituée d’une liste de
noms d’utilisations de clé
autorisées.
Les noms pris en charge sont : digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment, keyAgreement, keyCertSign, cRLSign, encipherOnly et decipherOnly.
Exemples :
keyUsage=digitalSignature, nonRepudiation keyUsage=critical, keyCertSign
Utilisation
étendue de clé.
Cette extension consiste en une liste d’utilisations
indiquant la raison pour laquelle la clé publique du
certificat peut être utilisée.
Celles-ci peuvent être les noms courts d’objets de forme numérique avec points des OID. Alors que tout OID peut être utilisé, uniquement certaines valeurs ont un sens. En particulier, les valeurs PKIX, NS et MS suivantes sont significatives :
Value Meaning −−−−− −−−−−−− serverAuth SSL/TLS Web Server Authentication. clientAuth SSL/TLS Web Client Authentication. codeSigning Code signing. emailProtection E−mail Protection (S/MIME). timeStamping Trusted Timestamping msCodeInd Microsoft Individual Code Signing (authenticode) msCodeCom Microsoft Commercial Code Signing (authenticode) msCTLSign Microsoft Trust List Signing msSGC Microsoft Server Gated Crypto msEFS Microsoft Encrypted File System nsSGC Netscape Server Gated Crypto
Exemples :
extendedKeyUsage=critical,codeSigning,1.2.3.4 extendedKeyUsage=nsSGC,msSGC
Identifiant
de clé de sujet.
C’est vraiment une extension chaîne et
elle peut prendre deux valeurs possibles. Soit le mot
hash qui va suivre automatiquement les lignes
directrices de la RFC3280, ou une
chaîne hexadécimale donnant la valeur
d’extension à inclure. L’utilisation de
la chaîne hexadécimale est fortement
déconseillée.
Exemple :
subjectKeyIdentifier=hash
Identifiant
de clé d’autorité.
L’extension d’identifiant de clé
d’autorité permet deux options. keyid et
issuer : chacune peut prendre la valeur
facultative always.
Si l’option keyid est présente, une tentative est faite pour copier l’identifiant de clé de sujet à partir du certificat de parent. Si la valeur always est présente, alors une erreur est renvoyée si l’option échoue.
L’option issuer copie l’émetteur et le numéro de série depuis le certificat de l’émetteur. Cela ne se fera que si l’option keyid échoue ou n’est pas incluse, sauf si le drapeau always inclut toujours cette valeur.
Exemple :
authorityKeyIdentifier=keyid,issuer
Nom
alternatif de sujet.
L’extension de nom alternatif du sujet permet
différentes valeurs littérales pouvant
être incluses dans le fichier de configuration. Il
s’agit notamment de email (une adresse de
courriel), URI un indicateur de
ressource uniforme, DNS (un nom de
domaine DNS ), RID (un
enregistrement d’ID : OBJECT
IDENTIFIER ), IP (une adresse
IP ), dirname (un nom distinctif) et
otherName.
L’option email inclut une valeur spéciale « copy ». Cela inclura automatiquement les adresses de courriel contenues dans le nom du sujet du certificat de l’extension.
L’adresse IP utilisée dans les options IP peut être en format IPv4 ou IPv6.
La valeur de dirName doit pointer vers une section contenant le nom unique à utiliser comme un ensemble de paires nom-valeur. Plusieurs valeurs AVA peuvent être formées en faisant précéder le nom d’un caractère +.
otherName peut inclure des données arbitraire associées à un OID : la valeur devrait être l’ OID suivi par un point-virgule et le contenu au format de la norme standard ASN1_generate_nconf(3).
Exemples :
subjectAltName=email:copy,email:my [AT] other.address,URI:http://my.url.here/ subjectAltName=IP:192.168.7.1 subjectAltName=IP:13::17 subjectAltName=email:my [AT] other.address,RID:1.2.3.4 subjectAltName=otherName:1.2.3.4;UTF8:un autre identifiant subjectAltName=dirName:dir_sect [dir_sect] C=UK O=My Organization OU=My Unit CN=My Name
Nom
alternatif d’émetteur.
L’option de nom alternatif d’émetteur
prend en charge toutes les options littérales de nom
alternatif de sujet. Elle ne prend pas en
charge l’option email:copy, car cela
n’aurait pas de sens. Elle prend en charge une option
supplémentaire issuer:copy qui permet de
copier toutes les valeurs de nom alternatif d’objet du
certificat de l’émetteur (si possible).
Exemple :
issuserAltName = issuer:copy
Accès
aux informations de l’autorité.
L’extension de l’accès aux informations
de l’autorité donne des détails sur la
façon d’accéder à certaines
informations relatives à la CA. Sa
syntaxe est accessOID;lieu où
lieu a la même syntaxe que le nom alternatif du
sujet (sauf que l’option email:copy n’est
pas prise en charge). accessOID peut être
n’importe quel OID valide, mais
seulement certaines valeurs sont significatives, par exemple
OCSP et caIssuers.
Exemple :
authorityInfoAccess = OCSP;URI:http://ocsp.my.host/ authorityInfoAccess = caIssuers;URI:http://my.ca/ca.html
Points de
distribution de la liste de révocations de certificat
( CRL ).
Cela est une extension multi-valeur dont les options
peuvent être soit en paire nom:valeur en utilisant la
même forme que le nom alternatif du sujet, soit une
valeur unique représentant un nom de section
contenant tous les champs de points de distribution.
Pour une paire nom:valeur, un nouveau DistributionPoint avec le champ fullName fixé à la valeur donnée ; les champs cRLissuer et reasons sont omis tout les deux dans ce cas.
Dans le cas de l’option unique, la section indiquée contient des valeurs pour chaque champ. Dans cette section :
— Si le nom est « fullname », le champ valeur doit contenir le nom complet du point de distribution dans le même format que le nom alternatif de sujet.
— Si le nom est « relativename », alors le champ valeur doit contenir un nom de section dont le contenu représente un fragment du DN à placer dans ce champ.
— Le nom « CRLIssuer », s’il est présent, doit contenir une valeur pour ce champ dans le format de nom alternatif de sujet.
Si le nom est « reasons », le champ doit se composer d’un champ séparé par des virgules contenant les raisons. Les raisons valides sont : « keyCompromise », « CACompromise », « affiliationChanged », « superseded », « cessationOfOperation », « certificateHold », « privilegeWithdrawn » and « AACompromise ».
Par exemple :
crlDistributionPoints=URI:http://myhost.com/myca.crl crlDistributionPoints=URI:http://my.com/my.crl,URI:http://oth.com/my.crl
Exemple complet de point de distribution :
crlDistributionPoints=crldp1_section [crldp1_section] fullname=URI:http://myhost.com/myca.crl CRLissuer=dirName:issuer_sect reasons=keyCompromise, CACompromise [issuer_sect] C=UK O=Organisation CN=Some Name
Émission
d’un Point de distribution
Cette extension doit apparaître seulement dans les
CRL. Il s’agit d’une extension
à multi-valeur dont la syntaxe est similaire
à la « section » pointée
par l’extension des points de distribution des
CRL avec quelques différences.
Les noms « reasons » et « CRLissuer » ne sont pas reconnus.
Le nom « onlysomereasons » est accepté ce qui définit ce champ. La valeur est dans le même format que le champ « reasons » du point de distribution CRL.
Les noms « onlyuser », « onlyCA », « onlyAA » et « indirectCRL » sont également acceptés. Les valeurs doivent être une valeur booléenne (« TRUE » ou « FALSE ») pour indiquer la valeur du champ correspondant.
Exemple :
issuingDistributionPoint=critical, @idp_section [idp_section] fullname=URI:http://myhost.com/myca.crl indirectCRL=TRUE onlysomereasons=keyCompromise, CACompromise [issuer_sect] C=UK O=Organisation CN=Some Name
Politiques
de certificat.
C’est une extension brut. Tous les champs de
cette extension peuvent être définis en
utilisant la syntaxe appropriée.
Si vous suivez les recommandations de PKIX et en utilisant simplement un OID, alors vous incluez la valeur de cet OID. De multiples OID peuvent être indiqués, séparés par des virgules, par exemple :
certificatePolicies= 1.2.4.5, 1.1.3.4
Si vous souhaitez inclure des qualificatifs, alors l’ OID de la politique et de qualification doivent être indiqués dans une section distincte : cela se fait en utilisant la syntaxe @section à la place d’une valeur littérale d’ OID.
La section visée doit comprendre l’ OID de politique en utilisant le nom policyIdentifier ; les qualificatifs cPSuri peuvent être inclus en utilisant la syntaxe :
CPS.nnn=value
Les qualificatifs UserNotice peuvent être définis en utilisant la syntaxe :
userNotice.nnn=@notice
La valeur du quantificateur userNotice est indiquée dans la section correspondante. Cette section peut inclure les options organisation explicitText et noticeNumbers. explicitText et organisation sont des chaînes de texte, noticeNumbers est une liste de numéros séparés par des virgules. Les options d’organisation et noticeNumbers (si inclus) doivent tous deux être présentes. Si vous utilisez l’option de userNotice avec IE5, alors vous devez avoir l’option ’ia5org’ au plus haut niveau pour modifier l’encodage : sinon il ne sera pas interprété correctement.
Exemple :
certificatePolicies=ia5org,1.2.3.4,1.5.6.7.8,@polsect [polsect] policyIdentifier = 1.3.5.8 CPS.1="http://my.host.name/" CPS.2="http://my.your.name/" userNotice.1=@notice [notice] explicitText="Explicit Text Here" organization="Organisation Name" noticeNumbers=1,2,3,4
L’option ia5org modifie le type du champ organisation. Dans la RFC2459, il ne peut être que de type DisplayText. Dans la RFC3280, IA5String est également admissible. Certains logiciels (par exemple certaines versions de MSIE ) peuvent exiger ia5org.
Contraintes
de politique
Cela est une extension multi-valeur qui comprend les
noms requireExplicitPolicy ou
inhibitPolicyMapping et une valeur entière non
négative. Au moins un composant doit être
présent.
Exemple :
policyConstraints = S<requireExplicitPolicy :3>
Inhiber
toute politique
Il s’agit d’une extension de chaîne dont
la valeur doit être un entier non négatif.
Exemple :
inhibitAnyPolicy = 2
Contraintes
de nom
L’extension des contraintes de nom est une extension
multi-valeur. Le nom doit commencer par le mot
permitted ou excluded suivie par un ;.
Le reste du nom et de la valeur suit la syntaxe de
subjectAltName sauf email:copy qui n’est
pas pris en charge et la forme d’IP devrait consister
en une adresse IP et un masque de
sous−réseau séparés par un
/.
Exemples :
nameConstraints=permitted;IP:192.168.0.0/255.255.0.0 nameConstraints=permitted;email:.somedomain.com nameConstraints=excluded;email:.com
Pas de
vérification OCSP
L’extension de non vérification du protocole
OCSP est une extension chaîne,
mais sa valeur est ignorée
Exemple :
noCheck = ignored
EXTENSIONS OBSOLÈTES
Les extensions suivantes ne sont pas standards, propres à Netscape et largement obsolètes. Leur utilisation dans de nouvelles applications est déconseillée.
Extensions
de chaîne pour Netscape.
Netscape Comment (nsComment) est une extension
chaîne contenant un commentaire qui sera
affiché lorsque le certificat est utilisé dans
certains navigateurs.
Exemple :
nsComment = "Un commentaire"
D’autres extensions prises en charge dans cette catégorie sont : nsBaseUrl, nsRevocationUrl, nsCaRevocationUrl, nsRenewalUrl, nsCaPolicyUrl et nsSslServerName.
Type de
certificat pour Netscape
Il s’agit d’une extension multi-valeur
qui consiste en une liste de drapeaux à inclure. Elle
a été utilisée pour indiquer les
objectifs pour lesquelles un certificat pourrait être
utilisé. Les extensions basicConstraints,
keyUsage et utilisation étendue de clé
sont maintenant utilisées à la place.
Les valeurs acceptables pour nsCertType sont : client, serveur, email, objsign, reserved, sslCA, emailCA, objCA.
EXTENSIONS ARBITRAIRES
Si une extension n’est pas prise en charge par le code d’OpenSSL, alors elle doit être codée en utilisant le format d’extension arbitraire. Il est également possible d’utiliser le format arbitraire pour les extensions prises en charge. Un soin extrême doit être pris pour s’assurer que les données soient formatées correctement pour le type d’extension donné.
Il y a deux façons de coder des extensions arbitraires.
La première façon est d’utiliser le mot ASN1 suivi par le contenu d’extension en utilisant la même syntaxe que ASN1_generate_nconf(3). Par exemple :
S<1.2.3.4=critical,ASN1 :UTF8String:Some> random data 1.2.3.4=ASN1:SEQUENCE:seq_sect [seq_sect] field1 = UTF8:field1 field2 = UTF8:field2
Il est également possible d’utiliser le mot DER pour inclure les données codées brutes dans n’importe quelle extension.
1.2.3.4=critical,DER:01:02:03:04 1.2.3.4=DER:01020304
La valeur suivant DER est un affichage hexadécimal de l’encodage DER de l’extension. Toute extension peut être placée sous cette forme pour remplacer le comportement par défaut. Par exemple :
basicConstraints=critical,DER:00:01:02:03
AVERTISSEMENT
Il n’y a aucune garantie qu’une mise en œuvre spécifique traitera une extension donnée. Il peut donc être parfois possible d’utiliser des certificats à des fins interdites par leurs extensions, car une application spécifique ne reconnaît pas ou ne prend pas en compte les valeurs des extensions en cause.
Les options de DER et ASN1 devraient être utilisées avec prudence. Il est possible de créer des extensions totalement non valables si elles ne sont pas utilisées avec précaution.
NOTES
Si une extension est multi-valeur et qu’une valeur de champ doit contenir une virgule, le format long doit être utilisé, autrement la virgule est interprétée comme un séparateur de champ. Par exemple :
subjectAltName=URI:ldap://somehost.com/CN=foo,OU=bar
produira une erreur, mais la forme équivalente :
subjectAltName=@subject_alt_section [subject_alt_section] subjectAltName=URI:ldap://somehost.com/CN=foo,OU=bar
est valide.
En raison du comportement de la bibliothèque conf d’OpenSSL, le même nom de champ ne peut apparaître qu’une fois dans une section. Cela signifie que :
subjectAltName=@alt_section [alt_section] email=steve@here email=steve@there
ne fera que reconnaître la dernière valeur. Cela peut être contourné en utilisant le formulaire :
[alt_section] email.1=steve@here email.2=steve@there
HISTORIQUE
Le code d’extensions de X509v3 a été ajouté à OpenSSL 0.9.2.
La mise en correspondance de politique, empêcher toute politique et les contraintes de nom ont été ajoutés dans OpenSSL 0.9.8
Les options directoryName et otherName ainsi que l’option ASN1 des extensions arbitraires ont été ajoutées dans OpenSSL 0.9.8
VOIR AUSSI
req(1), ca(1), x509(1), ASN1_generate_nconf(3)
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.