EJBCA Pas à Pas

De FrozenWiki

Installer JBOSS

Des Instructions d'installation plus générales se trouvent ici

  • Télécharger JBOSS depuis http://www.jboss.org/jbossas/downloads/
  • Dé-zipper l'archive dans /opt
  • Renommer le dossier /opt/jboss-x.x.x en /opt/jboss
  • Editer le fichier /opt/jboss/bin/run.conf et changer les paramètres mémoire -Xms***m -Xmx***m etc...
  • Editer le fichier /opt/jboss/server/default/conf/bootstrap/bindings.xml ou /opt/jboss/server/default/conf/bindingservice.beans/META-INF/bindings-jboss-beans.xml pour modifier (éventuellement) les ports 8080 et 8443 selon le besoin. Ne pas modifier les valeurs des ports dans la section des transform à la fin du fichier.
  • Créer un nouvel utilisateur et groupe jboss avec la commande
useradd -r -U -d /opt/jboss jboss
  • Associer tous les fichiers dans /opt/jboss à l'utilisateur jboss via
chown -R jboss:jboss /opt/jboss
  • Il faudra se rappeler de réallouer tous les fichiers modifiés par root à l'utilisateur jboss, ou alors les modifications futures de fichiers devront se faire en tant qu'utilisateur jboss via:
su - jboss
  • Créer un dossier de logs avec:
mkdir /var/log/jboss
chown jboss:jboss /var/log/jboss
  • Editer le nom du serveur smtp dans le fichier /opt/jboss/server/default/deploy/mail-service.xml
  • Sous gentoo il faut créer le fichier /etc/profile.d/jboss.sh avec le contenu:
#!/bin/sh 
# export des variables d'environnement JBOSS_HOME 
export JBOSS_HOME=/opt/jboss
# export de la variable d'environnement JBOSS_HOST 
export JBOSS_HOST=0.0.0.0
# Fichier de log Jboss 
export JBOSS_CONSOLE=/var/log/jboss/jboss.log
# Utilisateur à utiliser pour démarrer jboss 
export JBOSSUS=jboss
# Serveur jboss à utiliser 
export JBOSS_SERVER=default

Puis il faut relancer son shell pour que les modifications prennent effet.

Script de lancement

Sur gentoo vous pouvez utiliser le fichier suivant (à sauvegarder dans /etc/init.d/jboss) comme fichier de lancement:

#!/bin/sh 
start(){ 
            echo "starting jboss.." 
            su -l jboss -c '/opt/jboss/bin/run.sh >> /var/log/jboss/log 2>> /var/log/jboss/errors &' 
} 
stop(){ 
            echo "stopping jboss.." 
            # su -l jboss -c '/opt/jboss/bin/shutdown.sh -S &' 
            su -l jboss -c '/opt/jboss/bin/shutdown.sh -S' 
} 
restart(){ 
            stop 
            sleep 60 
            su -l jboss -c 'killall java' 
            start 
} 
case "$1" in 
  start) 
            start 
            ;; 
  stop) 
            stop 
            ;; 
  restart) 
            restart 
            ;; 
  *) 
            echo "Usage: jboss {start|stop|restart}" 
            exit 1 
esac 
exit 0 

Options de sécurité

Pour sécuriser l'accès aux différentes consoles jboss, accessibles par défaut sur http://localhost:8080/ il faut éditer les fichiers suivants:

Sécuriser la console JMX

  • /opt/jboss/server/default/conf/props/jmx-console-users.properties et modifier la ligne admin=admin en username=password
  • /opt/jboss/server/default/deploy/jmx-console.war/WEB-INF/jboss-web.xml et dé-commenter la section:
<!DOCTYPE jboss-web PUBLIC
   "-//JBoss//DTD Web Application 5.0//EN"
   "http://www.jboss.org/j2ee/dtd/jboss-web_5_0.dtd">

<jboss-web>
      <security-domain>java:/jaas/jmx-console</security-domain>
</jboss-web>
  • /opt/jboss/server/default/deploy/jmx-console.war/WEB-INF/web.xml et dé-commenter la section suivante:
   <!-- A security constraint that restricts access to the HTML JMX console
   to users with the role JBossAdmin. Edit the roles to what you want and
   uncomment the WEB-INF/jboss-web.xml/security-domain element to enable
   secured access to the HTML JMX console.
   <security-constraint>
     <web-resource-collection>
       <web-resource-name>HtmlAdaptor</web-resource-name>
       <description>An example security config that only allows users with the
         role JBossAdmin to access the HTML JMX console web application
       </description>
       <url-pattern>/*</url-pattern>
       <http-method>GET</http-method>
       <http-method>POST</http-method>
     </web-resource-collection>
     <auth-constraint>
       <role-name>JBossAdmin</role-name>
     </auth-constraint>
   </security-constraint>

Sécuriser l'accès au status

  • /opt/jboss/server/default/deploy/ROOT.war/WEB-INF/jboss-web.xml et y mettre le contenu:
<!DOCTYPE jboss-web PUBLIC
   "-//JBoss//DTD Web Application 5.0//EN"
   "http://www.jboss.org/j2ee/dtd/jboss-web_5_0.dtd">
   
<jboss-web>
      <security-domain>java:/jaas/jmx-console</security-domain>
</jboss-web>
  • jboss/server/default/deploy/ROOT.war/WEB-INF/web.xml et y ajouter les lignes:
  <security-constraint>
     <web-resource-collection>
       <web-resource-name>HtmlAdaptor</web-resource-name>
       <description>An example security config that only allows users with the
         role JBossAdmin to access the status application
       </description>
       <url-pattern>/status</url-pattern>
       <http-method>GET</http-method>
       <http-method>POST</http-method>
     </web-resource-collection>
     <auth-constraint>
       <role-name>JBossAdmin</role-name>
     </auth-constraint>
   </security-constraint>
   
   <login-config>
      <auth-method>BASIC</auth-method>
      <realm-name>JBoss Status</realm-name>
   </login-config>

   <security-role>
      <role-name>JBossAdmin</role-name>
   </security-role>

Sécuriser la Web Console Java

  • /opt/jboss/server/default/conf/props/web-console-users.properties et y mettre la ligne username=password
  • /opt/jboss/server/default/conf/props/web-console-roles.properties et y mettre la ligne admin=JBossAdmin,HttpInvoker
  • jboss/server/default/conf/login-config.xml et y mettre à jour le chemin vers web-console-users.properties en /props/web-console-users.properties, et de même pour web-console-roles.properties
  • jboss/server/default/deploy/management/console-mgr.sar/web-console.war/WEB-INF/jboss-web.xml et dé-commenter la ligne security-domain:
!DOCTYPE jboss-web
    PUBLIC "-//JBoss//DTD Web Application 2.3V2//EN"
    "http://www.jboss.org/j2ee/dtd/jboss-web_3_2.dtd">

<jboss-web>
   <security-domain>java:/jaas/web-console</security-domain>
   <!-- The war depends on the -->
   <depends>jboss.admin:service=PluginManager</depends>
</jboss-web>
  • /opt/jboss/server/default/deploy/management/console-mgr.sar/web-console.war/WEB-INF/web.xml et dé-commenter la section:
   <!-- A security constraint that restricts access to the HTML JMX console
   to users with the role JBossAdmin. Edit the roles to what you want and
   uncomment the WEB-INF/jboss-web.xml/security-domain element to enable
   secured access to the HTML JMX console.
   <security-constraint>
   <web-resource-collection>
   <web-resource-name>HtmlAdaptor</web-resource-name>
   <description>An example security config that only allows users with the
   role JBossAdmin to access the HTML JMX console web application
   </description>
   <url-pattern>/*</url-pattern>
   <http-method>GET</http-method>
   <http-method>POST</http-method>
   </web-resource-collection>
   <auth-constraint>
   <role-name>JBossAdmin</role-name>
   </auth-constraint>
   </security-constraint>

Installer EJBCA

Une aide très utile se trouve dans ce document (source) et la documentation d'installation officielle se trouve sur la page ejbca

  • Télécharger EJBCA depuis http://www.ejbca.org/download.html
  • Dé-zipper l'archive dans /opt
  • Renommer le dossier /opt/ejbca-x.x.x en /opt/ejbca
  • Sous gentoo il faut créer le fichier /etc/profile.d/ejbca.sh avec le contenu:
#!/bin/sh
# Ajout de la variable d'environnement pour EJBCA 
export EJBCA_HOME=/opt/ejbca

Puis il faut relancer son shell pour que les modifications prennent effet.

  • Créer dans l'outil d'administration mysql un nouvel utilisateur ejbca et lui associer une nouvelle base de données ejbca
  • Télécharger la dernière version du driver JDBC mysql depuis http://dev.mysql.com/downloads/connector/j/5.1.html
  • Dé-zipper l'archive dans /tmp
  • Copier le fichier extrait mysql-connector-java-x.x.x-bin.jar dans le dossier /opt/jboss/server/default/lib/
  • Copier les librairies Bouncycastle de ejbca vers jboss:
cp /opt/ejbca/lib/bc*.jar /opt/jboss/server/default/lib/
  • Donner les droits au dossier ejbca à l'utilisateur jboss
chown -R jboss:jboss /opt/ejbca
  • Il faudra se rappeler de réallouer tous les fichiers modifiés par root à l'utilisateur jboss, ou alors les modifications futures de fichiers devront se faire en tant qu'utilisateur jboss via:
su - jboss

Configuration

  • Les fichiers de configuration se trouvent à un endroit centralisé
cd /opt/ejbca/conf
  • Copier les version sample en version properties:
cp database.properties.sample database.properties
cp mail.properties.sample mail.properties
cp web.properties.sample web.properties
cp ejbca.properties.sample ejbca.properties
  • Editer le fichier database.properties et configurer les accès à la base de données
  • Editer le fichier mail.properties et configurer le nom du serveur smtp et l'adresse de l'émetteur des emails
  • Editer le fichier web.properties et configurer les modifications (modifier uniquement les mots de passe)
  • Editer le fichier ejbca.properties et configurer la section Basic CA configuration et les mots de passe

Installation

  • Vérifier que jboss est arrêté:
/etc/init.d/jboss stop
  • Lancer le bootstrap en tant qu'utilisateur jboss:
su - jboss
cd /opt/ejbca
ant clean
ant bootstrap
  • Vérifier que jboss est démarré, puis attendre que le chargement soit fini en surveillant les logs:
/etc/init.d/jboss start
tail -f /var/log/jboss/log
  • Lancer l'installation en tant qu'utilisateur jboss:
su - jboss
cd /opt/ejbca
ant install
  • Si cette étape plante, pour pouvoir recommencer l'étape il faut nettoyer:
    • la base mysql (tout effacer)
    • les fichiers dans /opt/ejbca/p12
  • et en tant que root:
cd /opt/ejbca
ant javatruststore
chown -R jboss:jboss /opt/jboss/
  • Arrêter jboss:
/etc/init.d/jboss stop
  • Lancer la commande de déploiement en tant qu'utilisateur jboss:
su - jboss
cd /opt/ejbca
ant deploy
  • Vous pouvez maintenant lancer jboss et vous connecter aux pages d'administration à l'aide du certificat stocké dans le dossier /opt/ejbca/p12