Barre Formation IN2P3
École franco-maghrébine 2003 WebServices 13-17 octobre 2003

Travaux pratiques

Précédent

tp4a

Suivant

Enoncé :

Modifier le WS d'authentification afin d'utiliser le protocole SSL pour faire circuler les données, ett un mécanisme d'authentification "HTTP Basic" pour faire vérifier le couple login/password par Tomcat.

Aide :

 

Correction :

Il faut tout d'abord générer votre certificat serveur.

keytool -genkey -alias tomcat -keyalg RSA -keystore server.keystore
 		  Tapez le mot de passe du Keystore : tomcat
 		  Quels sont vos prénom et nom ?
 [Unknown] : tomcat
 Quel est le nom de votre unité organisationnelle ?
 [Unknown] : cc
 Quelle est le nom de votre organisation ?
 [Unknown] : in2p3
 Quel est le nom de votre ville de résidence ?
 [Unknown] : lyon
 Quel est le nom de votre état ou province ?
 [Unknown] : rhone
 Quel est le code de pays à deux lettres pour cette unité ?
 [Unknown] : fr
 Est-ce CN=tomcat, OU=cc, O=in2p3, L=lyon, ST=rhone, C=fr ?
 [non] : ouiSpécifiez le mot de passe de la clé pour <tomcat>
   (appuyez sur Entrée s'il s'agit du mot de passe du Keystore) :

On l'exporte dans un fichier.

keytool -export -alias tomcat -keyalg RSA -keystore server.keystore -file client.cer -storepass tomcat 
 	        Certificat enregistré dans le fichier <client.cer>

On copie le fichier "server.keystore" dans $TOMCAT_HOME/conf.

On édite le fichier server.xml placé dans la configuration Tomcat ($TOMCAT_HOME/conf/server.xml).

En remplaçant :

<!--
<Connector className="org.apache.catalina.connector.http.HttpConnector"
 		    port="8443" minProcessors="5" maxProcessors="75"
 		    enableLookups="true"
 		    acceptCount="10" debug="0" scheme="https" secure="true">
 <Factory className="org.apache.catalina.net.SSLServerSocketFactory"
 			clientAuth="false" protocol="TLS"/>
 </Connector>
-->

Par :

    <Connector className="org.apache.catalina.connector.http.HttpConnector"
port="8443" minProcessors="5" maxProcessors="75"
enableLookups="true"
acceptCount="10" debug="0" scheme="https" secure="true">
<Factory className="org.apache.catalina.net.SSLServerSocketFactory"
keystoreFile="server.keystore"
keystorePass="tomcat""
clientAuth="false" protocol="TLS"/>
</Connector>

Il faut redémarrer Tomcat. On vérifie en ouvrant l'adresse "https://localhost:8443/" dans un butineur. Normalement Internet Explorer ou Mozilla vont indiquer que le certificat n'est pas certifié par un authorité de confiance valide (c'est normal, c'est vous qui venez de le créer), il faut accepter ce certificat comme correct.

On peut utiliser le client du tp3b pour tester, il faut modifier les noms de package pour créer le package tp4aclient à la place de tp3bclient.

Puis changer l'adresse du service web pour utiliser le protocole https et le port 8443.

java -Djavax.net.ssl.trustStore=tp4a/server.keystore -Djavax.net.ssl.trustStorePassword=tomcat tp4aclient/ReservationClient

On utilise le fichier keystore du serveur pour que le client accepte le certificat présenté par le serveur lors de la poignée de main SSL (ssl handshake).

École franco-maghrébine 2003 WebServices 13-17 octobre 2003