Un coup de main de linagora (qui a dit "une fois n'est pas coutume ?") : [[attachment: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 [[https://jira.primekey.se/browse/ECA-989|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 }}} * [[http://git.auf.org/?p=pki;a=blob;f=ejbca/createcrl.sh|createcrl.sh]] script de création/mise à jour des CRLs (inspiration : [[http://www.ejbca.org/manual.html#Cron job]]) * [[http://git.auf.org/?p=pki;a=blob;f=ejbca/backup.sh|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 == . lire http://ejbca.org/faq.html#logLevelJBoss . 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) : {{{ }}} ||<#fcca00> 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 }}}