Skip to main content

6. Indication des CA de confiance

Les clients contraints qui, en raison de limitations de mémoire, ne possèdent qu'un petit nombre de clés racine CA peuvent souhaiter indiquer aux serveurs quelles clés racine ils possèdent, afin d'éviter des échecs de poignée de main répétés.

Afin d'indiquer quelles clés racine CA ils possèdent, les clients PEUVENT inclure une extension de type "trusted_ca_keys" dans le client hello (étendu). Le champ "extension_data" de cette extension DOIT contenir "TrustedAuthorities" où :

struct {
TrustedAuthority trusted_authorities_list<0..2^16-1>;
} TrustedAuthorities;

struct {
IdentifierType identifier_type;
select (identifier_type) {
case pre_agreed: struct {};
case key_sha1_hash: SHA1Hash;
case x509_name: DistinguishedName;
case cert_sha1_hash: SHA1Hash;
} identifier;
} TrustedAuthority;

enum {
pre_agreed(0), key_sha1_hash(1),
x509_name(2), cert_sha1_hash(3), (255)
} IdentifierType;

opaque DistinguishedName<1..2^16-1>;

Ici, "TrustedAuthorities" fournit une liste d'identifiants de clés racine CA que le client possède. Chaque clé racine CA est identifiée via l'un des moyens suivants :

  • "pre_agreed" : aucune identité de clé racine CA fournie.

  • "key_sha1_hash" : contient le hachage SHA-1 de la clé racine CA. Pour les clés Digital Signature Algorithm (DSA) et Elliptic Curve Digital Signature Algorithm (ECDSA), il s'agit du hachage de la valeur "subjectPublicKey". Pour les clés RSA, le hachage est celui de la représentation en chaîne d'octets big-endian du module sans aucun octet initial de valeur 0. (Cela copie les formats de hachage de clé déployés dans d'autres environnements.)

  • "x509_name" : contient le DistinguishedName X.509 encodé en DER de la CA.

  • "cert_sha1_hash" : contient le hachage SHA-1 d'un certificat encodé en DER contenant la clé racine CA.

Notez que les clients peuvent inclure aucune, certaines ou toutes les clés racine CA qu'ils possèdent dans l'extension trusted_ca_keys. La décision d'inclure une clé racine CA particulière peut être basée sur le fait que le client soit prêt à effectuer une authentification basée sur la clé racine CA, que la CA émette des certificats pertinents pour le serveur, ou qu'il existe un mode d'échec connu pour les poignées de main impliquant l'utilisation de cette clé racine.

Si un serveur reçoit un message client hello contenant l'extension "trusted_ca_keys", il PEUT utiliser les informations contenues dans l'extension pour guider son choix de certificat à renvoyer au client. Dans ce cas, le serveur DOIT inclure une extension de type "trusted_ca_keys" dans le server hello (étendu). Le champ "extension_data" de cette extension DOIT être vide.