Serveur CAS 4 sur CentOS 7
De wikiGite
Sommaire
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://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.