Serveur CAS 4 sur CentOS 7

De wikiGite

Webographie

https://stansantiago.wordpress.com/2011/07/21/installing-cas-server-on-centos/ #(SSL auto-signed cert conf)

http://www.artduweb.com/tutoriels/cas-sso

https://www.digitalocean.com/community/tutorials/how-to-install-apache-tomcat-7-on-centos-7-via-yum

http://tecadmin.net/configure-ssl-certificate-in-tomcat/

https://wiki.jasig.org/display/CASUM/Best+Practice+-+Setting+Up+CAS+Locally+using+the+Maven+WAR+Overlay+Method

https://apereo.github.io/cas/5.0.x/installation/Maven-Overlay-Installation.html

Installation et configuration

Tomcat

yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel
yum install tomcat tomcat-admin-webapps tomcat-webapps

Editer la configuration de Tomcat

vi /usr/share/tomcat/conf/tomcat.conf
JAVA_OPTS="-Djava.security.egd=file:/dev/./urandom -Djava.awt.headless=true -Xmx512m -XX:MaxPermSize=256m -XX:+UseConcMarkSweepGC"

Optionnel : Si le port 8080 est déjà utilisé sur le serveur, modifier le port par défaut de Tomcat (ex: en 8880):

vi /usr/share/tomcat/conf/server.xml
   <Connector port="8880" protocol="HTTP/1.1"
              connectionTimeout="20000"
              redirectPort="8443" />

Dans le bloc <tomcat-users> de tomcat-users.xml ajouter un admin webapps

vi /usr/share/tomcat/conf/tomcat-users.xml
<user username="admin" password="password" roles="manager-gui,admin-gui"/>

Relancer Tomcat

systemctl enable tomcat
systemctl restart tomcat

tester :

http://<url du serveur>:8880

Si l'écran d'acceuil apparait, tester le "manager apps" avec les identifiants indiqués dans tomcat-users.xml.

Optionnel : inutile sur CO7 (jasper-jdt semble déjà présent par défaut), voir pour d'autres systèmes :

cd /usr/share/tomcat/lib
wget http://www.java2s.com/Code/JarDownload/tomcat-6.0.16-jasper-jdt.jar.zip
unzip tomcat-6.0.16-jasper-jdt.jar.zip
rm tomcat-6.0.16-jasper-jdt.jar.zip

CAS (install "de base")

cd /opt
wget http://developer.jasig.org/cas/cas-server-4.0.0-release.tar.gz
tar -xvzf cas-server-4.0.0-release.tar.gz
cp cas-server-4.0.0/modules/cas-server-webapp-4.0.0.war /usr/share/tomcat/webapps
systemctl restart tomcat

Test CAS Server login page

http://<url du serveur>:8880/cas-server-webapp-4.0.0/login

EDIT : à étudier, version 5 de CAS : http://book2s.com/java/jar/c/cas-server/download-cas-server-5.0.0.m1.jar.html

SSL

certificat auto-signé

/usr/jdk1.8.0_11/bin/keytool -genkey -alias tomcat -keyalg RSA -keystore /usr/share/tomcat/.keystore

mettre les mêmes mots de passe au début et à la fin, toutes les autres options par défaut

Editer la configuration Tomcat

vi /usr/share/tomcat/conf/server.xml

Décommenter le bloc

<Connector port="8843"
  ...

Changer éventuellement le port 8843 s'il est déjà utilisé (ainsi que ses références dans les autres blocs du fichier) et ajouter après sslProtocol="TLS" :

keystorePass="<mot de passe défini avec keytool>"

si le keystore a été déplacé (option "-keystore" de keytool), ajouter

keystoreFile="chemin vers keystore"

let's encrypt

Après installation de letsencypt, on peut utiliser un script de ce genre (à adapter, la partie centrale de génération du certificat lui-même par Letencrypt dépend du système et des options de renouvellement (voir tutos Let's Encrypt)

#!/bin/bash
#author Ivan Tichy
#customized by Frank Soyer

if [ $# -ne 1 ]
then
   echo "Usage : $0 <domain_name>"
   exit 1
fi

mydomain=$1
certdir=/etc/letsencrypt/live/$mydomain
keytooldir=/usr/jdk1.8.0_11/bin/ #java keytool path
keystoredir=/etc/pki/$mydomain
keystorpass=UpwFfpfC


<...commandes de génération du certificat par letsencrypt...>


# Suppression de l'ancien certificat du keystore
$keytooldir/keytool -delete -alias $mydomain -storepass $keystorpass -keystore $keystoredir
$keytooldir/keytool -delete -alias $mydomain.p12 -storepass $keystorpass -keystore $keystoredir

# Export vers format p12
/usr/bin/openssl pkcs12 -export -in $certdir/fullchain.pem -inkey $certdir/privkey.pem -out $certdir/$mydomain.p12 -name $mydomain.p12 -CAfile $certdir/chain.pem -caname root -password pass:aaa

# Réinstallation dans le keystore
$keytooldir/keytool -importkeystore -srcstorepass aaa -deststorepass $keystorpass -destkeypass $keystorpass -srckeystore $certdir/$mydomain.p12 -srcstoretype PKCS12 -alias $mydomain.p12 -keystore $keystoredir
$keytooldir/keytool -import -trustcacerts -alias $mydomain -deststorepass $keystorpass -file $certdir/chain.pem -noprompt -keystore $keystoredir

systemctl restart tomcat

Editer la configuration de Tomcat pour inclure le SSL

vi /usr/share/tomcat/conf/server.xml
   <Connector port="8843" protocol="org.apache.coyote.http11.Http11Protocol"
              maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
              clientAuth="false" sslEnabledProtocols="TLSv1.2,TLSv1.1,TLSv1" ciphers="TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384, TLS_ECDH_RSA_WITH_AES_256_CBC_SHA,TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256, TLS_ECDH_RSA_WITH_AES_128_CBC_SHA,TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA" keystoreFile="/etc/pki/altern8.kogite.fr" keystorePass="UpwFfpfC" />


Tester :

https://<url du serveur>:8880/cas-server-webapp-4.0.0/login

Beans (authentification)

Les "beans" qui gèreront l'authentification sont déclarés dans deployerConfigContext.xml.

Exemple pour une authentification générique (login/mot de passe):

Si cas-server-support-generic-4.0.0.jar n'est pas déjà présent dans /usr/share/tomcat/webapps/cas-server-webapp-4.0.0/WEB-INF/lib (peut être installé par défaut), le copier :

cp cas-server-4.0.0/modules/cas-server-support-generic-4.0.0.jar /usr/share/tomcat/webapps/cas-server-webapp-4.0.0/WEB-INF/lib

Modifier :

vi /usr/share/tomcat/webapps/cas-server-webapp-4.0.0/WEB-INF/deployerConfigContext.xml

décommenter la définition bean pour SimpleTestUsernamePasswordAuthenticationHandler et ajouter (avec login/mot de passe approprié):

<bean class="org.jasig.cas.adaptors.generic.AcceptUsersAuthenticationHandler">
   <property name="users">
      <map>
         <entry key="<username>" value="<password>" />
      </map>
   </property>
</bean>
systemctl restart tomcat

Tester

https://<url du serveur>:8880/cas-server-webapp-4.0.0/login

Modification des sources

Les sources sont paramétrables dans pom.xml du répertoire de compilation installé par le tar.gz (ex: dans /opt), puis on régénère un cas.war après modification.

cd /opt/cas-server-4.0.0/cas-server-webapp
# ...modifier le pom.xml, ajouter des sources, etc... et réinstaller
mvn clean install -Dlicense.skip=true

mvn crée un rép. target dans lequel on trouve le cas.war compilé. On le copie au bon endroit

cp /opt/cas-server-4.0.0/cas-server-webapp/target/cas.war /usr/share/tomcat/webapps/cas-server-webapp-4.0.0.war

Attention : Normalement le répertoire cas-server-webapp-4.0.0 ne doit pas changer si on ne fait qu'écraser le .war. Ne pas renommer l'ancien fichier par sécurité (en .old par ex.) sinon le répertoire disparaît et Tomcat le recrée tout seul avec tout son contenu par défaut. Il faudra alors reconfigurer (restaurer) deployerConfigContext.xml.