Per TLS come indicare a IIS 7 di includere le CA intermedie da includere nel frame Richiesta certificato?

2

Sto osservando un problema in cui l'handshake TLS sta fallendo tra un client Java e un servizio web ospitato su IIS 7. Dopo averlo intercettato, sembra che il problema sia l'elenco delle autorità attendibili fornite nel frame richiesta certificati. non includere la CA intermedia che ha firmato il certificato cliente che si intende utilizzare. Osservando la RFC si afferma che il frame dovrebbe includere

A list of the distinguished names of acceptable certificate authorities. These distinguished names may specify a desired distinguished name for a root CA or for a subordinate CA; thus, this message can be used both to describe known roots and a desired authorization space.

Per me questo significa che l'intermedio avrebbe dovuto essere incluso. C'è qualche impostazione nascosta per forzare l'inclusione della CA intermedia o sono errata nella mia interpretazione delle specifiche. Se non sono corretto, non vedo come sia possibile identificare il certificato cliente appropriato.

Modifica Per dare un po 'più di fondo. La catena di fiducia in questione è di Entrust ed è composta da tre livelli profondi, la CA, una CA intermedia e la foglia. In questo caso il servizio è protetto da un Cert Server firmato dall'intermedio e il client sta chiamando utilizzando un Cert Client firmato dallo stesso intermediario.

    
posta Tedford 09.04.2013 - 21:57
fonte

2 risposte

2

È possibile aggirare l'interpretazione un po 'liberale di IIS delle specifiche SSL / TLS esportando il certificato client in formato PEM (ASCII base64), aggiungendo i certificati pubblici per le CA nella catena di fiducia e quindi importando il certificato indietro nel keystore con lo stesso alias.

Per chiarire: non è sufficiente avere tutti i certificati nella catena nel keystore - devono essere importati con il certificato del client stesso come un pacchetto. Vedere questo thread su StackOverflow per i dettagli: perché non java invia il certificato del client durante l'handshake SSL?

Ho appena usato questo metodo per risolvere questo problema esatto con un client Java e un server IIS 7.5.

EDIT:

Si noti che dopo aver importato il certificato in formato bundle (con le sue CA) non si noteranno nuove voci con keytool -list . Inoltre, se esporti nuovamente l'alias, riceverai comunque solo il certificato del cliente. L'unica differenza che noterai è un paio di KB in più sul file.

Utilizza uno strumento come KeyStore Explorer per vedere tutti i certificati associati a una voce del keystore. Infatti, KeyStore Explorer consente anche di aggiungere certificati alla catena di certificati in-keystore per qualsiasi voce, in alternativa al percorso di esportazione / modifica / importazione.

    
risposta data 26.03.2014 - 16:35
fonte
1

Si tratta di un problema noto in Windows se il certificato non viene importato correttamente in IIS, probabilmente tramite uno script o IIS MMC. Ho riscontrato lo stesso problema con Firefox che non convalida il certificato SSL di un server con tale configurazione.

La soluzione per me era eliminare e reimportare i certificati dalla radice fino al server Web uno per uno nell'archivio del computer che non utilizzava lo strumento IIS ma utilizzava lo strumento CertMgr.

Per gestire direttamente i certs, puoi farlo andando a MMC (scrivi semplicemente MMC da start - > run). Quindi aggiungere lo snap-in Certificati per la macchina locale. Ciò ti dà più visibilità sui certificati.

    
risposta data 09.04.2013 - 22:09
fonte

Leggi altre domande sui tag