Esercitazione su HTTPS


1. Preparazione

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

2. HTTPS con autenticazione Server

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] 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 .

3. HTTPS con autenticazione Client

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] Nota

Anche in questo caso, la chiave del certificato privato deve coincidere con la chiave del keystore, sempre per limiti della JVM.

Footer BGFooter BG
Tito Flagella - © 2007-2015