Il y a plusieurs critères à respecter pour qu’un certificat TLS soit reconnu valide. Si un seul de ces critères n’est pas suivi, alors le certificat est invalide et n’apporte aucune sécurité ! Sa présence pourrait même faire croire à une fausse sécurité !
Nom du certificat = URL du site Web
L’URL d’un site Web quelconque respecte la forme https://nom-du-site:port/chemin :
- https = protocole
- nom-du-site = nom DNS du site Web
- :port = facultatif, tous les sites Web sont sur le port 80 en HTTP ou sur le 443 en HTTPS, seuls les sites Web « bizarres » ne respectent pas les ports par défaut
- /chemin = chemin d’accès à la page Web dans le site
Dans un certificat, on utilise un champ nommé « SAN » (SubjectAlternativeName). Le SAN contient une liste de noms, et le « nom-du-site » tel qu’affiché dans le navigateur Web de l’utilisateur doit être présent dans cette liste.
dates valides du certificat
Un certificat possède 2 dates, qui doivent absolument être respectées :
- NotBefore : le certificat n’est pas valide avant cette date de début
- NotAfter : le certificat n’est plus valide après cette date de fin
autorité de certification reconnue
Un certificat est toujours signé par une autorité de certification. Pour faire une analogie avec l’administration, on peut voir cette autorité de certification comme une sorte de notaire, dont la respectabilité et le professionnalisme suffit pour légaliser et authentifier des documents officiels.
Pour qu’un certificat soit valide, il faut donc que l’autorité de certification qui a signé ce certificat soit reconnue comme légitime.
Dans un navigateur Web, la liste des autorités de certification reconnues est codée en dur. On peut éventuellement rajouter à la main des autorités supplémentaires, à condition de parfaitement bien en comprendre la portée (seul un responsable de sécurité informatique est légitime à faire cette opération).
Quand on programme un logiciel, on spécifie une liste d’autorités lors de la compilation (à récupérer dans le magasin de certificats Windows, ou bien dans la base OpenSSL Linux, ou bien encore à indiquer manuellement via des conteneurs propriétaires comme les JKS de Java).
non-révocation du certificat
L’autorité qui a signé le certificat publie également une liste de certificats révoqués. Ces certificats ont un jour été signés par cette autorité, mais pour une raison quelconque ces certificats ne doivent plus être considérés comme valides. Même si leur nom est bon, même si les dates de validité sont encore bonnes. Par exemple, le propriétaire du certificat peut demander sa révocation s’il a perdu la clef privée du certificat, ou bien s’il se l’est faite dérober.
Un certificat est donc valide s’il ne fait pas partie de la liste des certificats révoqués par son autorité de certification.