Sto provando a configurare un'autenticazione client (per l'autenticazione reciproca) tra 2 tomcats ma a questo punto sono bloccato dal fatto che il mio client non invii il suo certificato. Ho una CA privata quindi nessun certificato autofirmato nella configurazione
Ecco cosa è configurato finora:
1) Tomcat A (che verrà raggiunto da Tomcat B) = riproduce il server:
- Ha un keystore con il suo certificato (chiave privata + certificato)
- Ha un truststore con certificati pubblici dalla CA principale e Tomcat B
2) Tomcat B (che raggiungerà Tomcat A) = riproduce il client:
- Ha un keystore con il suo certificato (chiave privata + certificato)
- Ha un rapporto di fiducia con i certificati pubblici di RootCA e Tomcat A
I certificati sono tutti emessi dalla CA radice e possono essere utilizzati sia per l'autenticazione client sia per quella server
I tomcat sono configurati con il seguente tag connettore
<Connector port="8443"
protocol="org.apache.coyote.http11.Http11NioProtocol"
SSLEnabled="true" scheme="https" secure="true" sslProtocol="TLS"
clientAuth="true"
keystoreFile="keystore.jks" keystorePass="xxxx" keyAlias="myAlias"
truststoreFile="truststore.jks" truststorePass="xxx" />
Diagnosi finora
- L'applicazione restituisce un "errore fatale: cattivo certificato"
-
Traccia Wireshark:
- B invia un "Client Hello"
- A invia un "Server Ciao, Certificato, Scambio chiavi del server, Richiesta di certificato, Server fatto"
- B invia un "Certificato, Scambio chiavi client"
- A invia un "Avviso (Livello: Fatale, Descrizione: Certificato non valido)
Ulteriori dettagli su:
- Passaggio 2: Nel frame, in particolare nel "Protocollo Handshake: Server Hello", posso vedere "Extension: renegotiation_info" (anche se Tomcat viene riavviato)
- Passaggio 3: Nel frame, in particolare nel "Protocollo handshake: certificato", posso vedere "Lunghezza certificati: 0"
Questo ultimo punto mi fa pensare che il certificato Client (certificato B) non invii il certificato.
Domande:
- Come posso verificare / verificare che il certificato sia ben inviato?
- Come posso risolvere la situazione?