Un coup de main de linagora (qui a dit "une fois n'est pas coutume ?") : installation_ejbca_debian.pdf
java
ajouter non-free dans les sources.list (Etch)
# aptitude install sun-java5-jre
installer les JCE-policy (cf doc d'installation d'EJBCA) (à installer avec deux diverts...)
mysql-server
configuration utf8, voir sur Etude/Unicode (+ collation-server = utf8_general_ci, on ne sait jamais)
- création de la base et de son utilisateur dédié :
CREATE DATABASE ejbca;
CREATE USER 'ejbca'@'localhost' IDENTIFIED BY 'motdepasse';
GRANT ALL ON ejbca.* TO 'ejbca'@'localhost';
installation du pilote JDBC : aptitude install libmysql-java
jboss
ajout dans sources.list : deb http://apt.auf.org/ etch thomas
voir le code source utilisés pour créer les paquets sur http://git.auf.org/?p=pki;a=tree;f=jboss4 (inspiration : http://svn.debian.org/viewsvn/pkg-jboss/jboss4/trunk/)
TODO : faire un addgroup jboss dans le postinst
- mise en place d'un serveur ejbca (à partir du serveur par défaut)
aptitude install jboss4
/etc/init.d/jboss4 stop (et attendre que le java arrête de mouliner)
/usr/share/jboss4/bin/create-server-config default ejbca
vi /etc/default/jboss4 : indiquer la valeur JBOSS_SERVER=ejbca
/etc/init.d/jboss4 start (et attendre 30s à 1min que ça démarre...)
ejbca
ATTENTION, les opérations précédées de $ sont à faire en tant qu'utilisateur jboss
- préparation
# aptitude install sun-java5-jdk ant (on a besoin de compiler... ce paquet peut sans doute être supprimé ensuite)
$ unzip dans /usr/share/ejbca
- adaptations de la configuration dans /usr/share/ejbca/conf/ :
- conf/ejbca.properties
- conf/database.properties
- conf/mail.properties
- conf/ocsp.properties
- conf/web.properties
- conf/log.properties
# /etc/init.d/jboss4 stop
$ export APPSRV_HOME=/usr/share/jboss4
$ export ANT_OPTS=-Xmx512m
$ ant clean
- boostrap (compilation et pré-déploiment de EJBCA)
avant : # chown jboss /srv/jboss4/ejbca/deploy
$ ant bootstrap
après : # chown root /srv/jboss4/ejbca/deploy
- installation pilote JDBC pour MySQL
# ln -s /usr/share/java/mysql-connector-java.jar /srv/jboss4/ejbca/lib/ : ajout du connecteur java (mmh... y'a pas un moyen plus propre ? classpath ?)
- créations des certifs (depuis le boostrap)
# /etc/init.d/jboss4 start
$ ant install
- déploiement complet (EJBCA et tous les clés+certificats associés)
# /etc/init.d/jboss4 stop
avant : # chown jboss /srv/jboss4/ejbca/conf /srv/jboss4/ejbca/deploy /srv/jboss4/ejbca/deploy/jboss-web.deployer
$ ant deploy
après : # chown jroot /srv/jboss4/ejbca/conf /srv/jboss4/ejbca/deploy /srv/jboss4/ejbca/deploy/jboss-web.deployer
- note : pour les redeploiements (nouvel ant deploy) souvent nécessaires par la suite (adaptation, mises à jour d'ejbca, etc.), il faudra bien faire "stop+chown" avant et "chown+start" après.
- premier test
# /etc/init.d/jboss4 start (attendre 1 min 30 à 2 min sur igc.auf ; ne pas pleurer)
aller sur https://.....:8442/ejbca
- récupération des clés ./p12/superadmin.p12 dans le navigateur
aller sur https://.....:8443/ejbca (auth avec certif)
- patch sur la version 3.7.1
l'argument cmd=deltacrt n'existe pas du côté de la partie publique; c'est un bug d'EJBCA 3.7.1 corrigé ici pour les futures version d'EJBCA. Le patch est appliqué sur igc.auf.org.
sécurisation : droits
Placer des droits rw-r----- root jboss sur les clés privées et autres. Pour cela, examiner les fichiers placés dans /srv/jboss4/ejbca par ejbca lors du ant deploy (fichiers appartenant à jboss).
sécurisation : nettoyage
Voir http://ejbca.org/security.html
On retire (rm) les objets suivants :
ejbca/deploy/jmx-console.war
ejbca/deploy/management/console-mgr.sar
Dans l'interface publique, suppression de :
publicweb/templates
publicweb/cardCertApply.jsp
publicweb/scripts/functions.vbs
sécurisation : frontal apache
Voir ici : http://git.auf.org/?p=pki;a=tree;f=ejbca/apache
Reste à ajouter un pare-feu local (INPUT 80 et 443 uniquement)
ejbca en ligne de commande
- création d'un script /usr/bin/ejbca :
$ cat /usr/bin/ejbca #!/bin/sh export APPSRV_HOME=/usr/share/jboss4/ cd /usr/share/ejbca exec ./bin/ejbca.sh "$@"
- NB : le tout accessible uniquement par l'utilisateur jboss pour éviter les soucis
cron : génération des CRLs et dump de la BD
$ cat /etc/cron.d/ejbca # /etc/cron.d/ejbca SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin MAILTO=.....@auf.org # creation des CRL quand c'est necessaire 22 * * * * jboss /usr/share/ejbca/createcrl.sh # dump des bases (pour backups) 0 1 * * * jboss /usr/share/ejbca/backup.sh
createcrl.sh script de création/mise à jour des CRLs (inspiration : http://www.ejbca.org/manual.html#Cron job)
backup.sh : script de dump de la BD ejbca (dump qui sera backupé, pour ne pas uniquement backuper /var/lib/mysql bêtement)
moins de logs
modifier /etc/jboss4/ejbca/jboss-log4j.xml en conséquence :
- remplacer DEBUG par INFO ou WARN
- ajouter un niveau max général (vers la fin du fichier) :
<root> <priority value="INFO" /> <appender-ref ref="FILE"/> </root>
TODO : logrotate & co
exemple de récupération en cas de perte d'accès superadmin (ahem…)
commencer par se créer un nouveau compte admin :
# su - jboss $ cd /usr/share/ejbca $ export APPSRV_HOME=/usr/share/jboss4/ $ ./bin/ejbca.sh ra adduser superadmin2 motdepasse CN=superadmin2 "" Administration "" 65 P12 $ echo "update AdminEntityData set matchValue='superadmin2' where matchValue='superadmin'" | mysql ejbca # sale bidouille, mais… pas trouvé mieux pour le moment… $ exit # /etc/init.d/jboss4 stop ; sleep 60 ; /etc/init.d/jboss4 start # à cause de la bidouille au dessus
aller récupérer son nouveau certificat admin sur https://...../ejbca/enrol/browser.jsp
éditer l'entité superadmin pour la remettre au statut Nouveau (+ nouveau mot de passe)
retourner remettre les droits correctement :
# su - jboss $ echo "update AdminEntityData set matchValue='superadmin' where matchValue='superadmin2'" | mysql ejbca # sale bidouille, mais… pas trouvé mieux pour le moment… $ exit # /etc/init.d/jboss4 stop ; sleep 60 ; /etc/init.d/jboss4 start # à cause de la bidouille au dessus