Modifications entre les versions 5 et 30 (s'étendant sur 25 versions)
Version 5 à la date du 2008-10-07 12:11:47
Taille: 1372
Éditeur: ThomasNoël
Commentaire: utf8 mon ami
Version 30 à la date du 2010-11-23 13:51:05
Taille: 7063
Commentaire: + bidouille pour récupérer l'accès superadmin quand il a expiré, ahem…
Texte supprimé. Texte ajouté.
Ligne 1: Ligne 1:
un coup de main de linagora (qui a dit "une fois n'est pas coutume ?") : [[attachment:installation_ejbca_debian.pdf]] Un coup de main de linagora (qui a dit "une fois n'est pas coutume ?") : [[attachment:installation_ejbca_debian.pdf]]
Ligne 5: Ligne 5:
 * ajouter ''non-free'' dans les sources.list (Etch)
 * aptitude install sun-java5-jre
 * ajouter les JCE-policy (cf doc d'installation de EJBCA) (''à packager avec deux diverts ?'')
 . 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...'')
Ligne 11: Ligne 11:
 * config utf8n, cf [[Etude/Unicode]] (+ `collation-server = utf8_general_ci`, mais est-ce utile ?)
 * utilisateur+base dédiés :
 . 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é :
Ligne 16: Ligne 16:
 * ajout de libmysql-java  . installation du pilote JDBC : `aptitude install libmysql-java`
Ligne 20: Ligne 20:
 * deb http://apt.auf.org/ etch thomas
 * source http://git.auf.org/?p=pki;a=tree;f=jboss4 (inspiration : http://svn.debian.org/viewsvn/pkg-jboss/jboss4/trunk/)
 . 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'''
Ligne 23: Ligne 24:
mise en place d'un serveur de test (à 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 test`
 *
`vi /etc/default/jboss4` : indiquer la valeur `JBOSS_SERVER=test`
 *
`/etc/init.d/jboss4 start` (et attendre 30 secondes que ça démarre...)
 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...)
Ligne 32: Ligne 33:
 * déploiement en tant que jboss:jboss
 * AC de départ : dédiée à l'administration du système
 * packaging : est-ce possible ?
'''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) :
  {{{
<root>
  <priority value="INFO" />
  <appender-ref ref="FILE"/>
</root>
}}}
 ||<#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
}}}

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

  • 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) :
      <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

PKI/InstallationSystème (dernière édition le 2010-11-23 13:51:05 par JeanChristopheAndré)