wiki:TomcatSSL

Tomcat Standalone en SSL

TOC? Essais Effectués avec la version 5.5.20 de Tomcat et Sun-Java 1.5, sous UNIX

Pré-requis : JDK Java, un clavier, une console ;)

Installer Tomcat

  1. Récupérer Tomcat sur le site d'Apache :  http://mir2.ovh.net/ftp.apache.org/dist/tomcat/tomcat-5/v5.5.20/bin/
  1. Décompresser ou installer ce qui vient d'être télécharger.
  1. Se rendre dans le dossier conf de Tomcat et éditer le fichier server.xml.
  1. Changer éventuellement :
<Server port="8005" shutdown="SHUTDOWN">

Cette commande permet d'arrêter le serveur a distance -- En général on change le mot SHUTDOWN en autre chose.

  1. Se rendre a la première Balise Connector :
<!-- Define a non-SSL HTTP/1.1 Connector on port 8080 -->
    <Connector port="8080" maxHttpHeaderSize="8192"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               connectionTimeout="20000" disableUploadTimeout="true" />

Cela signifie que le serveur Tomcat va écouter sur le port 8080 en HTTP (donc non sécurisé..)

Changer éventuellement le port ou commenter ces lignes si on veut empêcher que l'on puisse accéder au serveur autrement qu'en SSL (https)

  1. Décommenter les lignes qui concernent le connector pour SSL :
<!-- Define a SSL HTTP/1.1 Connector on port 8443 -->
   
    <Connector port="8443" maxHttpHeaderSize="8192"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" disableUploadTimeout="true"
               acceptCount="100" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS"/>
    <Connector/>

Éventuellement changer le port d'écoute.

Nous avons fini de configurer Tomcat, nous maintenant générer le certificat pour la connection ssl

Génération du certificat SSL

Note : Vous n'avez pas a faire cela si vous possédez un certificat signé par une autorité de confiance.

Pour générer le certificat, nous allons utiliser l'outil keytool de la JVM (les commandes sont données pour UNIX faire les adaptations nécessaires sur Windows.

  • Ouvrir une console et taper la commande suivante : (il est important de remplacer JAVA_HOME par le chemin de votre JVM, sinon il est possible que vous génériez un certificat avec un mauvais keytool est qu'il soit à un mauvais format !)
sudo $JAVA_HOME/keytool -genkey -alias tomcat -keypass changeit -keyalg RSA -keystore $JAVA_HOME/jre/lib/security/cacerts
  • Diverses informations vous sont ensuite demandées :
Quels sont vos prénom et nom ?
  [Unknown] :  /!\ il faut mettre ici le hostname du serveur (pour moi nb888) pas son nom et prénom !!
Quel est le nom de votre unité organisationnelle ?
  [Unknown] :  CERV
Quelle est le nom de votre organisation ?
  [Unknown] :  ENIB
Quel est le nom de votre ville de résidence ?
  [Unknown] :  BREST 
Quel est le nom de votre état ou province ?
  [Unknown] :  FIN
Quel est le code de pays à deux lettres pour cette unité ?
  [Unknown] :  FR
Est-ce CN=Nicolas Bouchard, OU=CERV, O=ENIB, L=BREST, ST=FIN, C=FR ?
  [non] :  oui

Le certificat est maintenant généré, il ne reste plus qu'a lancer Tomcat

Lancement et Essais de Tomcat

  • Il suffit de se rendre dans le dossier bin de Tomcat et de lancer startup.bat ou startup.sh. Je vous conseille d'utiliser une console, ça permet de voir les messages d'erreur s'il y en a.
Affichage si le serveur démarre normalement :

nb888@nb888:/home/tomcat/bin$ ./startup.sh 
Using CATALINA_BASE:   /home/tomcat
Using CATALINA_HOME:   /home/tomcat
Using CATALINA_TMPDIR: /home/tomcat/temp
Using JRE_HOME:       /usr/lib/jvm/java-1.5.0-sun
  • Petit Message d'erreur classique :
Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
At least one of these environment variable is needed to run this program

Pour résoudre le problème, il suffit de faire (sous UNIX) :

export JAVA_HOME=/usr/lib/jvm/java-1.5.0-sun

A adapter si le chemin de votre JVM est différente !

La suite est à adapter selon ce que vous avez activé dans le fichier de configuration de Tomcat (ports..)

  • Bon on peut passer au essais ! Ouvrez votre navigateur préféré et tapez l'adresse suivante : http://localhost:8080/

Vous devez normalement voir la page d'accueil de Tomcat dans sa version HTTP non sécurisée.

  • Pour la version sécurisée : https://localhost:8443/

Votre navigateur vous demande d'accepter le certificat et vous devez normalement voir la page d'accueil de Tomcat dans sa version HTTP sécurisée.

--> Si ça ne fonctionne pas je vous conseille de regarder les fichiers de log de Tomcat pour essayer de résoudre le problème (Dossier logs)

Attachments