2011-01-14 15 views
6

Vorrei eseguire un servlet in Jetty su un sito HTTPS che richiede un certificato client solo per parte del sito (URL specifici). Per esempio:Il jetty richiede un certificato client SSL tramite l'URL

https://example.com/someservlet/public - nessuna cert cliente richiesto https://example.com/someservlet/protected - client cert richiesto

In Apache posso fare questo specificando SSLVerifyClient require all'interno di un <Directory> o <Location> che costringe ad Apache di rinegoziare la connessione SSL dopo che la richiesta è fatta .

Non voglio eseguire Jetty incorporato in nient'altro, solo standalone. È possibile? Può un Servlet causare questo direttamente in qualche modo? Può essere fatto tramite la configurazione?

risposta

3

Per quanto ne so, è possibile specificare solo le opzioni SSL su base per porta.

Anche se è possibile che la configurazione che si sta tentando di raggiungere sia problematica, in quanto necessita di SSLRenegotiation che è stata modificata circa un anno fa a causa di una vulnerabilità di sicurezza. Il nuovo metodo per eseguire una SSLRenogitiation è quindi supportato solo dai nuovi client e talvolta anche se supportato non funziona a causa di bug.

La mia raccomandazione per una soluzione semplice: Configura Jetty per l'ascolto su due porte SSL: Ad esempio su 443 senza autenticazione Client HTTPS e su 8443 con autenticazione client HTTPS richiesta. Quindi rendi disponibile la tua servlet protetta solo su 8443. Questa non è una soluzione carina ma al 100% robusta, funziona con Jetty e con tutti i client.

+1

Nel mio ambiente, tutti i client e i server devono essere aggiornati (sono state alcune settimane divertenti mentre i problemi di rinnovo erano in corso). Inoltre, l'uso di porte non standard non sarà consentito attraverso i vari firewall. – user63599

+0

pochi mesi dopo, qualcuno è a conoscenza di una soluzione che funzionerebbe con una singola porta? –

Problemi correlati