Sto testando un'applicazione basata su .net in esecuzione su un server Win2012r2 che fornisce servizi Web basati su http e che si affidano a SChannel di Windows per implementare l'autenticazione reciproca tls1.2 con i client compatibili solo da tls1.2.
L'autenticazione reciproca ha funzionato molto bene (i certificati client sono validati correttamente rispetto all'elenco di emittenti affidabili definiti e attivi nell'archivio certificati del computer locale).
Ieri mi sono imbattuto nel seguente scenario che in qualche modo mi imbarazza: anche se il client presenta una lunghezza del certificato pari a 0, la stretta di mano sembra essere tecnicamente valida e non risulta in un errore di stretta di mano o in un avviso di stretta di mano:
- (sul lato server) Server Ciao, Certificato, Scambio chiavi server, Richiesta certificato , Server Ciao Fatto;
- (sul lato client) Certificato, Scambio chiavi client, Specificazione cifrario, Messaggio crittografato di handshake (tuttavia il client di test non fornisce alcun certificato client - lunghezza del certificato del client pari a 0 - durante l'handshake);
- (sul lato server): modifica specifica cipher , messaggio crittografato di handshake;
Perché il lato server non sta terminando l'handshake (errore o avviso di handshake) dopo aver ricevuto alcun certificato client?
Potrebbe essere solo il modo in cui wireshark sta interpretando / analizzando il processo di handshake?
Questo è qualcosa configurabile / sintonizzabile a livello di canale o può essere regolato solo a livello di applicazione?