mercoledì 27 dicembre 2006

Mutua autenticazione su Jboss 4.0.x

Faccio riferimento al post precedente, nel quale si illustra uno dei fin troppo numerosi modi di configurare JBoss per l'accesso HTTPS.
Questa volta proviamo a configurare la mutua autenticazione SSL.
Per fare questo, rispetto alla procedura precedentemente descritta, è sufficiente aprire con un editor di testi il file /server/default/deploy/jbossweb-tomcatxx.sar/server.xml ed impostare a "true" l'opzione clientAuth :


<Connector port="8443" address="${jboss.bind.address}"
maxThreads="100" strategy="ms" maxHttpHeaderSize="8192"
emptySessionPath="true"
scheme="https" secure="true" clientAuth="true"
keystoreFile="${jboss.server.home.dir}/conf/servercert.p12"
keystorePass="apassword" sslProtocol = "TLS"
keystoreType="PKCS12" />


Non riavviare il servizio! Così configurato, Jboss non farà accedere alcun utente.
E' infatti necessario configurare il trustStore, ovvero l'archivio dei certificati client e delle Autorità di Certificazione affidabili, in una delle due modalità previste:
  • aggiungendo certificati root di Autorità di Certificazione: in questa modalità, tutti gli utenti in possesso di certificati validi ed emessi dalle Autorità di Certificazione i cui certificati sono inclusi nel trustStore sono automaticamente autorizzati ad accedere;
  • aggiungendo i singoli certificati degli utenti che hanno facoltà di accedere ai servizi: in questo modo, solo gli utennti i cui certificati sono inclusi nel trustStore possono accedere al server.
Il trustStore non è presente all'atto dell'installazione di JBoss. Per crearlo, aggiungendovi un certificato, digitare:
    keytool -import -v -keystore truststore.jks  -storepass apassword -file cert.cer
dove trustore.jks indica il file del vero e proprio trustStore che si vuole creare, apassword indica la parola chiave di cifratura del file e cert.cer è il nome del file del certificato dell'Autorità di Certificazione o dell'utente che si vuole aggiungere.
Naturalmente, se è stabilito di inserire un certificato per ogni utente abilitato all'accesso, il comando di cui sopra va ripetuto per ogni certificato da autorizzare.

Rimane quindi un ultimo passaggio: indicare a JBoss quale trustStore utilizzare.
Per fare questo, modificare il file di configurazione /server/default/deploy/jbossweb-tomcatxx.sar/server.xml nel seguente modo:

<Connector port="8443" address="${jboss.bind.address}"
maxThreads="100" strategy="ms" maxHttpHeaderSize="8192"
emptySessionPath="true"
scheme="https" secure="true" clientAuth="true"
keystoreFile="${jboss.server.home.dir}/conf/servercert.p12"
keystorePass="apassword" sslProtocol = "TLS"
keystoreType="PKCS12"
truststoreFile="${jboss.server.home.dir}/conf/truststore.jks"
truststorePass="apassword"
/>

Ricordarsi inoltre di fare attenzione ai path dei vari *store!

Eventi a cui partecipo