La suite di cifratura ECDHE-RSA-AES128-SHA
significa che lo scambio di chiavi utilizzerà una coppia di chiavi ECDH dinamicamente generata, che il server firmerà con la propria chiave privata RSA. Il certificato del server quindi contiene una chiave pubblica RSA, indipendentemente dal modo in cui tale certificato è stato firmato dalla sua CA.
Suppongo che il certificato che utilizzi contenga una coppia di chiavi EC, quindi non compatibile con la suite di crittografia ECDHE-RSA-AES128-SHA
. È piuttosto stupido dal server avviare tutto con le opzioni fornite, poiché, in effetti, non supporta affatto la suite di crittografia. Ma il software è noto per essere stupido (a volte).
Quindi, mentre il client è perfettamente in grado di comprendere le firme ECDSA (e afferma come tale nella sua estensione signature_algorithms
), l'elenco delle suite di crittografia supportate che hai configurato gli impedisce di accettare qualsiasi messaggio di ServerKeyExchange
che contiene nient'altro che una chiave pubblica ECDH firmata con RSA.
Inoltre, l'estensione signature_algorithms
è solo parzialmente correlata a questo. Con questa estensione, il client può annunciare gli algoritmi di firma che supporta, e questo è inteso per help il server selezionare una catena di certificati appropriata e algoritmi per i messaggi che devono essere firmati. Se il client dice "Solo RSA", allora il server dovrebbe sforzarsi di utilizzare solo firme RSA, sia per ciò che si firma (es. ServerKeyExchange
messaggio) e per le catene di certificati è invia (tutti i certificati CA dovrebbero essere basati su RSA).
Questo è, in pratica, un pio desiderio. La maggior parte dei server ha solo un certificato, e questo è quello che invierà, indipendentemente dall'estensione signature_algorithms
. E la maggior parte dei client si adatterà: se il client supporta realmente le firme RSA, elaborerà le firme RSA sui certificati e sui messaggi TLS. Questo è il comportamento normale in assenza dell'estensione signature_algorithms
.
Il vero uso di questa estensione non è limitare i possibili algoritmi di firma - questi sono vincolati sia dalla suite di crittografia che dal tipo di certificato effettivamente posseduto dal server - ma per aiutare il server a scegliere le funzioni di hash / em> da utilizzare con algoritmi di firma. Quando il client dice: "Suppongo RSA con SHA-256", mi sta davvero dicendo al server "se devi usare le firme RSA, allora puoi farlo con SHA-256 come funzione di hash di supporto, so come gestirlo ".