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:[email protected],URI:http://my.url.here/ subjectAltName=IP:192.168.7.1 subjectAltName=IP:13::17 subjectAltName=email:[email protected],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éeExemple :
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
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.