The SmartWeb Project

27 ottobre 2006

Proteggere una web-app

Volendo mettere sotto protezione HTTPS una web-app bisogna innanzitutto assicurarsi che JBoss sia in grado di lavorare in SSL andando a variare il file server/default/deploy/jbossweb-tomcat55.sar/server.xml.

In questo file bisogna de-commentare la parte relativa al connettore HTTPS assicurandosi che la porta utilizzata corrisponda a quella configurata nel connettore HTTP con il nome di redirectPort, in caso contrario non funzionerebbe il redirect automatico da HTTP ad HTTPS.

E' necessario inoltre configurare il nome del file contenente le chiavi pubbliche e private e la password per l'accesso al suddetto file.

Per generare il file delle chiavi si deve utilizzare il keytool incluso nella JDK della Sun:
keytool -genkey -keyalg RSA -keysize 1024    -keystore jboss.keystore -keypass jboss.pass    -dname "cn=www.domain.com, o=SmartLab, l=Rome, c=it"

E' importante che il Common Name (cn) del certificato corrisponda al nome con cui si accede al sito, il resto รจ del tutto variabile a piacere.

Spostate il file jboss.keystore dentro la cartella server/default/conf assicurandovi che il nome del file ed il valore della password corrispondano a quelli configurati nel connettore HTTPS rispettivamente con gli attributi keystoreFile e keystorePass.

A questo punto potete rendere completamente sicura una intera applicazione o anche solamente parte di essa utilizzando semplicemente il file web.xml, come nell'esempio seguente:

 <security-constraint>
   <web-resource-collection>
     <web-resource-name>all-files</web-resource-name>
     <url-pattern>/*</url-pattern>
     <http-method>GET</http-method>
     <http-method>POST</http-method>
   </web-resource-collection>
   <user-data-constraint>
     <transport-guarantee>CONFIDENTIAL</transport-guarantee>
   </user-data-constraint>
 </security-constraint>


E' possibile controllare quali siano le risorse protette attraverso il tag url-pattern tenendo presente che possono essere presenti molteplici blocchi del tipo web-resource-collection.