Per la verifica dell'esercitazione è necessario disporre di un servizio web e del relativo client fruitore. Se non se ne dispone di uno, scaricare la soluzione dell'esercitazione Web Service e seguire le istruzioni per il deploy e l'esecuzione.
Saranno utilizzati i keystore client.jks
e shopping.jks
prodotti nell'esercitazione Certificati
Configuriamo Tomcat per aprire un connettore SSL che utilizzi il protocollo SSL per l'autenticazione Server utilizzando il certificato de Negozio.
Modificare il file di configurazione di Tomcat in
$CATALINA_BASE/conf/server.xml
aggiungendo la definizione del seguente connettore a quelli
preconfigurati:
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="/home/u/user/keystore/shopping.jks" keystorePass="******"/>
Nota | |
---|---|
Per una limitazione della JVM, la chiave del certificato privato deve coincidere con la chiave del keystore, come nel nostro esempio. |
Avviare Tomcat e verificare che non ci siano errori nel log durante lo startup.
Se adesso invochiamo con il nostro client il servizio modificando il protocollo di trasporto nella URL di invocazione, dovremmo ottenere un errore perché il certificato inviato dal Server non è tra quelli "fidati".
Il metodo più semplice per abilitare il Client alla comunicazione SSL è quello di configurare la JVM con il keystore contenente la chiave pubblica del Negozio e la password per decifrarlo.
-Djavax.net.ssl.trustStore=/home/u/user/keystore/client.jks -Djavax.net.ssl.trustStorePassword=******
In Eclipse le properties alla JVM si impostano in
Run > Run Configurations > Java
Application > [MiaConfigurazione] > Arguments > VM Arguments
.
Modifichiamo il connettore HTTPS configurato su Tomcat al punto
precedente per richiedere l'autenticazione Client agento sul parametro
clientAuth
ed aggiungendo il trustore:
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="/home/u/user/keystore/shopping.jks" keystorePass="******" truststoreFile="/home/u/user/keystore/shopping.jks" truststorePass="*******"/>
Avviare quindi Tomcat e verificare che non ci siano errori nel log durante lo startup.
Se adesso invochiamo con il nostro client il servizio, dovremmo ottenere un errore perché il client non si autentica al servizio.
Anche l'abilitazione dell'autenticazione del client può essere fatta configurando la JVM con il keystore contenente la chiave privata del Client e la password per decifrarlo.
-Djavax.net.ssl.keyStore=/home/u/user/keystore/client.jks -Djavax.net.ssl.keyStorePassword=******
Nota | |
---|---|
Anche in questo caso, la chiave del certificato privato deve coincidere con la chiave del keystore, sempre per limiti della JVM. |