Le certificat
Chaque certificat contient le nom de son fournisseur et de son sujet (l'entité certifiée), une clé publique lié au sujet (sa clé publique pour ce certificat), une période de validité, un numéro de version (version du type de certificat) et un numéro de série (du certificat par rapport à l'authorité l'ayant certifié).
Numéro de version (version)
Ceci définit le numéro de version du certificat encodé. Nous utilisons la version 3.
Numéro de série (serialNumber)
Le numéro de série doit:
- être un entier positif,
- être unique pour chaque certificat d'un même fournisseur.
Les AC se doivent de :
- respecter les contraintes sur ce numéro,
- comprendre des numéros pouvant être formé de vingt octets.
- ne pas fournir de numéro de plus de ving octets.
L'algorithme de Signature du certificat (signature)
Ce champs contient l'identifiant (comme ceux utilisés dans la RFC 1423 ou 3279 par exemple) de l'algorithme utilisé (par exemple, SHA1 pour le résumé, DSA pour le chiffrage) pour générer la signature digitale du certificat.
Ce champ doit contenir le même identifiant d'algorithme que celui indiqué dans le champ signature de l'enveloppe du certificat.
Fournisseur (issuer)
Le champ fournisseur identifie l'entité qui a émis et signé le certificat. Ce champ doit contenir un nom distinctif non vide. Il s'agit d'une suite d'attributs comme nom du pays et la valeur comme FR. Le type des attributs est généralement une chaîne de caractère (DirectoryString) pour répertoire (LDAP par exemple).
Une chaîne DirectoryString peut être soit: PrintableString, TeletexString, BMPString, UTF8String, ou UniversalString.
S'il n'est pas possible d'afficher la chaîne ni (dans cet ordre) comme une PrintableString, ni comme BMPString, la chaîne doit être interprétée comme UTF8String (ce qui est logique…).
Les champs fournisseur et sujet des certificats ont au minimum les champs suivant de compréhensible:
pays, (country),
organisation (organization),
département de l'organisation (organizational-unit),
- qualité du nom distinctif(distinguished name qualifier):
The DN Qualifier attribute type specifies disambiguating information to add to the relative distinguished name of an entry. It is intended to be used for entries held in multiple DSAs which would otherwise have the same name, and that its value be the same in a given DSA for all entries to which this information has been added.
état, région ou département (state or province name),
nom commun (common name) (par ex, "Albert Dupont"),
numéro de série (serial number),
les composants du nom de domaine comme définis dans la RFC 2247 (domainComponent).
Il est préférable de s'attendre à avoir d'autres champs comme la ville (locality), le titre, les initiales, le pseudonyme etc…
Évidement, l'utilisation des certificats implique la compréhension de ce champs afin de remonter la chaîne de certification en trouvant un nom distinctif d'AC correspondant à celui du fournisseur. La correspondance dépend de l'encodage du nom distinctif, en effet, si l'encodage est PrintableString, la comparaison n'est pas sensible à la casse et les espaces de têtes et de queue et en réduisant les espaces consécutifs à un seul, sinon, la comparaison est sensible à la casse et aux espaces.
Période de validité (validity)
Il s'agit d'un intervalle de temps durant laquelle l'AC garantie le maintien à jour les informations concernant le status du certificat. Cette intervalle est composée de deux dates: Pas avant (notBefore) et Pas après (notAfter).
Ces deux dates sont encodées soit en UTCTime soit en GeneralizedTime.
Les AC doivent encoder les dates en:
- UTCTime:
Quand elles sont strictement inférieures à 2050. Il s'agit d'un champ du type YYMMDDHHMMSSZ, où tous les champs doivent être présents, même à zéro et où Z correspondre à soit Z comme le temps Greenwitch, soit un différenciel horaire, ainsi la date est exprimée au méridien de Greenwitch.
Quand YY est supérieur ou égal à 50, l'année devrait être interprétée comme 19YY, sinon comme 20YY.
- GeneralizedTime:
- Quand elles sont supérieures à 2050. Il s'agit d'un champ de type YYYYMMDDHHMMSSZ, où tous les champs doivent être présents, même à zéro et où Z correspondre à soit Z comme le temps Greenwitch, soit un différenciel horaire, ainsi la date est exprimée au méridien de Greenwitch sans fraction de seconde.
La période de validité dure de notBefore (exclue) jusqu'à notAfter (inclue).
Sujet (subject)
Le champ sujet identifie l'entité associée à la clé publique enregistrée dans le champs réservé (subjectPublicKey). Le nom distinctif du sujet peut être soit présent dans le champ sujet, soit dans le champ de nom alternatif (présent dans les extensions sous l'intitulé subjectAltName), soit dans les deux.
Si le certificat est celui d'une authorité de certification, alors ce champ ne doit pas être vide et doit correspondre au champs fournisseur de tous les certificats émis par cette AC.
Si le certificat est celui d'un fournisseur de révocation, alors ce champ ne doit pas être vide et doit correspondre au champs fournisseur de tous les certificats de révocation émis par ce fournisseur.
Si le nom du sujet n'est présent que dans l'extension *nom alternatif*, alors ce champs doit être vide et l'interprétation de l'extension *nom alternatif* doit être critique.
Lorsque ce champ n'est pas vide il doit contenir une nom distinctif (*DN*) X.500. Comme son nom l'indique, il doit être unique pour chaque entité certifiée. Bien entendu, une AC peut certifier plusieurs fois (pour des usages différents par exemple) une même entité.
L'adresse email si fournie dans le certificat doit utilisé la nomenclature de la RFC 822, et n'être présente de préférence dans l'extension de nom alternatif.
Clé publique lié au sujet (subjectPublicKeyInfo)
Ce champs contient la clé publique et l'algorithme utilisé avec la clé (RSA, DSA, etc…).
Identifiants uniques
Il s'agit d'identifiants n'apparaissant que dans des certificats de version 2 ou 3. Ils ne sont pas obligatoires et les AC ne devraient pas les émettre dans des certificats.