systemx

Aller au contenu | Aller au menu | Aller à la recherche

mardi, septembre 27 2011

CAS/Tomcat/Liferay installation en ssl auto-signé

Le but premier de cette note est l'installation en mode ssl d'apache y acceuillir une webapp CAS (gestion de jeton d'authetification) sous tomcat qui acceuille l'application lilferay. Le systeme de gestion des certificats est un peu complexe et nécessite beaucoup de travail si on emboite pas bien toutes les étapes d'installation.
  1. Tomcat en mode SSL.
  2. En suivant le tuto de la page apache/tomcat ca se passe plutôt bien.
    Connector protocol="org.apache.coyote.http11.Http11Protocol"
    port="8443" SSLEnabled="true"
    maxThreads="150" scheme="https" secure="true"
    clientAuth="false" sslProtocol="TLS"
    keystoreFile="/fullpath/keystore.tomcat" keystorePass="changeit"
    
    Suite aux problèmes de CAS, j'avais mis en doute cette méthode mais ca fonctionne bien.

    La ligne keystoreFile contient le certificat visible lors de l'accès à Tomcat et généré en format JKS via keytool.
    La ligne
    protocol="org.apache.coyote.http11.Http11Protocol"
    est importante car il spécifie que nous sommes en format JSSE à l'opposé d'un format openssl (utilisé par apache par exemple).
    Dans ce cas on peut laissé la ligne par défaut de tomcat
    Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" 
    et on évite la confusion entre les 2 formats.
    Pour la génération des certificats, voir ci dessous.
  3. Validation des certificats sous tomcat
  4. C'est une des étapes primordiale, si le server SSL tomcat fonctionne bien, mes webapps plateront certainement si les clés ne sont pas bien insérées dans les keystore qui vont bien.
    De plus il faut faire très attention à ce que vous mettez lors de la génération du certificat, pour moi il a fallu mettre le CN et le OU du certificat au FQDN de la machine.
    keytool  -genkey -alias tomcat -keyalg RSA --keystore tempkeystore  -validity 3650 -keypass changeit
    -dname "CN=host.fqdn.com, OU=host.fqdn.com, O=TheCompany, L=Paris, C=FR"
    
    On peut vérifier ensuite le cert :
    ~/tmp # keytool --list -v -keystore tempkeystore
    Enter keystore password:
    Keystore type: JKS
    Keystore provider: SUN
    Your keystore contains 1 entry
    Alias name: tomcat
    Creation date: Sep 27, 2011
    Entry type: PrivateKeyEntry
    Certificate chain length: 1
    Certificate[1]:
    Owner: CN=host.fqdn.com, OU=host.fqdn.com, O=TheCompany, L=Paris, C=FR
    Issuer: CN=host.fqdn.com, OU=host.fqdn.com, O=TheCompany, L=Paris, C=FR
    Serial number: 4e81a0c9
    Valid from: Tue Sep 27 10:09:13 GMT 2011 until: Wed Sep 26 10:09:13 GMT 2012
    Certificate fingerprints:
    MD5:  8D:F2:0A:9B:6F:A1:E5:A3:B0:0B:95:60:00:90:38:8D
    SHA1: 6E:21:F2:9B:C9:04:E4:73:63:7F:15:C0:33:EC:17:31:99:EB:3B:D1
    Signature algorithm name: SHA1withRSA
    Version: 3
    
    Ensuite il faut extraire le certificat pour la mettre dans le keystore de la JVM ($JAVA_HOME/jre/lib/security/cacerts).
    On export le certificat créé :
    keytool -export -alias tomcat -keypass changeit  -file host.fqdn.com.cert -keystore tempkeystore
    Par précaution on efface l'alias dans le keystore de la JVM :
    keytool -delete -alias tomcat -keystore /opt/java/jre/lib/security/cacerts
    On insère le certificat dans le keystore de la JVM :
    keytool -import -file  host.fqdn.com.cert -keypass changeit -keystore /opt/java/jre/lib/security/cacerts
    Bien vérifier que le OU/CN est bien setté et vérifier que votre server renvoi bien ce nom en hostname, de plus dans le cas ou vous utiliser des alias DNS pour faire de vhosts bien vérifier comment vous accédez à votre server.
    Redémarrer tomcat et bien vérifier que tout va bien dans le log.
    Des errreurs du type :
    PKIX path building failed ...
    javax.net.ssl.SSLHandshakeException ...
    
    C'est probablement qu'il y a une erreur dans les étapes ci dessus.
    Vous devriez pouvoir accéder à votre site avec :
    https://host.fqdn.com:8443/
    En cas de désespoir il faut lancer la JVM avec l'option "-Djavax.net.debug=ssl" bien utile et forcer l'emplacement du keystore de la JVM "-Djavax.net.ssl.trustStore=/path/keystore".

  5. Configuration de CAS
Lien intéressants :
https://wiki.jasig.org/display/CASUM/HOWTO+Setup+Dual+Authentication+in+CAS+-+SSL+Client+Auth+and+LDAP https://wiki.jasig.org/display/CAS/Solving+SSL+issues

vendredi, janvier 14 2011

Valider la page admin tomcat et sécuriser les mots de passe

J'ai installé tomcat 5.5 (5.5.31) dans le repertoire /opt/tomcat.
Après l'installation je me connecte à la page d'admin et :

Tomcat's administration web application is no longer installed by default. Download and install
the "admin" package to use it.

Diantre que diable dois je faire ?
Installer le webapp d'admin bien sûr à recupérer sur :
http://archive.apache.org/dist/tomcat/tomcat-5/v5.5.31/bin/
C'est un tar qui part de la racine de tomcat .. Par terrible.
Le placer dans le repertoire webapps puis restart, on voit bien l'application mais à chaque fois que l'on se connecte sur /admin on a toujours le même message.
Il faut retirer le fichier index.html de : /opt/tomcat/webapps/ROOT/admin et miracle ca fonctionne.
Pour les utilisateurs il faut aller dans le fichier ; /opt/tomcat/conf/tomcat-users.xml.
Ajouter des roles pour manager et admin puis les users.
Le mot de passe est en clair, pas terrible.
Pour crypter les mots de passe il faut aller dans le server.xml et changer le "digest" (un peu à la mode apache d'ailleurs)...
Ajouter au niveau de (en dessous)
Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"

digest="MD5"
digestEncoding="UTF-8"

Ensuite on peut mettre un passwd md5 dans le fichier tomcat-users.xml et redemarrer tomcat.
A noter que le md5 est peut etre pas le plus secure.