Passa al contenuto principale

6. Indicazione delle CA attendibili

I client vincolati che, a causa di limitazioni di memoria, possiedono solo un piccolo numero di chiavi radice CA potrebbero voler indicare ai server quali chiavi radice possiedono, al fine di evitare ripetuti fallimenti dell'handshake.

Per indicare quali chiavi radice CA possiedono, i client POSSONO includere un'estensione di tipo "trusted_ca_keys" nel client hello (esteso). Il campo "extension_data" di questa estensione DEVE contenere "TrustedAuthorities" dove:

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>;

Qui "TrustedAuthorities" fornisce un elenco di identificatori di chiavi radice CA che il client possiede. Ogni chiave radice CA è identificata tramite uno dei seguenti modi:

  • "pre_agreed": nessuna identità di chiave radice CA fornita.

  • "key_sha1_hash": contiene l'hash SHA-1 della chiave radice CA. Per le chiavi Digital Signature Algorithm (DSA) ed Elliptic Curve Digital Signature Algorithm (ECDSA), questo è l'hash del valore "subjectPublicKey". Per le chiavi RSA, l'hash è quello della rappresentazione della stringa di byte big-endian del modulo senza byte iniziali di valore 0. (Questo copia i formati di hash delle chiavi distribuiti in altri ambienti.)

  • "x509_name": contiene il DistinguishedName X.509 codificato DER della CA.

  • "cert_sha1_hash": contiene l'hash SHA-1 di un certificato codificato DER contenente la chiave radice CA.

Si noti che i client possono includere nessuna, alcune o tutte le chiavi radice CA che possiedono nell'estensione trusted_ca_keys. La decisione di includere una particolare chiave radice CA può basarsi sul fatto che il client sia pronto a eseguire l'autenticazione basata sulla chiave radice CA, se la CA emette certificati rilevanti per il server o se esiste una modalità di fallimento nota per gli handshake che coinvolge l'uso di quella chiave radice.

Se un server riceve un messaggio client hello contenente l'estensione "trusted_ca_keys", PUÒ utilizzare le informazioni contenute nell'estensione per guidare la sua scelta del certificato da restituire al client. In questo caso, il server DEVE includere un'estensione di tipo "trusted_ca_keys" nel server hello (esteso). Il campo "extension_data" di questa estensione DEVE essere vuoto.