EJBCA

Aus HC Services

Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

Benötigte Pakete

Installation Prerequisiten

Java

  • Binary ausführbar machen
chmod 755 jdk-<vesion>.bin
  • Ausführen
./jdk-<vesion>.bin
...
  • Erstelltes Verzeichniss nach /opt verschieben und einen Symlink für späteren Versionsswitch erstellen
mv jdk1.<version> /opt/

ln -s /opt/jdk1.<version> /opt/java
  • Javaspezifische Variablen setzen
export JAVA_HOME="/opt/java"

export PATH=$PATH:$JAVA_HOME/bin
  • JCE installieren
unzip jce_policy-6.zip

cp jce/*.jar $JAVA_HOME/jre/lib/security

JBoss

  • Entpacken
unzip jboss-5.1.0.GA.zip
  • Erstelltes Verzeichniss nach /opt verschieben und einen Symlink für späteren Versionsswitch erstellen
mv jboss-5.1.0.GA/ /opt/

ln -s /opt/jboss-5.1.0.GA/ /opt/jboss 
  • JBossspezifische Variablen setzen
export  APPSRV_HOME="/opt/jboss"

export  JBOSS_HOME="/opt/jboss/"

JDBC MySQL Treiber

  • Entpacken und ins JBoss-Lib Verzeichnis kopieren
tar -zxf mysql-connector-java-<version>.tar.gz

cp mysql-connector-java-<version>/mysql-connector-java-<version>-bin.jar /opt/jboss/common/lib/

Ant

  • Gleiche Prozedur wie bei Java und JBoss
tar -zxf apache-ant-<version>-bin.tar.gz

mv apache-ant-<version> /opt/

ln -s /opt/apache-ant-<version>/ /opt/ant

export ANT_HOME="/opt/ant"

export PATH=$PATH:$ANT_HOME/bin

export ANT_OPTS="-Xmx512m" #Optional

Installation ECBCA

Preconfiguration EJBCA

  • Gleiche Prozedur wie bei Java und JBoss, und Ant
unzip ejbca_<version>.zip

mv ejbca_<version> /opt/

ln -s /opt/ejbca_<version>/ /opt/ejbca

export EJBCA_HOME="/opt/ejbca"

Datenbank anlegen

mysql -u root -p
mysql> create database testca;
mysql> grant all privileges on testca.* to testca identified by 'blabla';
mysql> quit

Konfigfiles anpassen

  • $EJBCA_HOME/conf/cmp.properties
cmp.ra.caname=TestCA
  • $EJBCA_HOME/conf/database.properties
database.name=mysql
datasource.mapping=mySQL
database.url=jdbc:mysql://127.0.0.1:3306/testca?characterEncoding=UTF-8
database.driver=com.mysql.jdbc.Driver
database.username=testca
database.password=blabla
  • $EJBCA_HOME/conf/ejbca.properties
appserver.type=jboss
appserver.home=/opt/jboss
ca.keystorepass=U|tr@s€cret
ca.xkmskeystorepass=U|tr@s€cret
ca.cmskeystorepass=U|tr@s€cret
  • $EJBCA_HOME/conf/install.properties
ca.name=TestCA
ca.dn=CN=TestCA,OU=PKI,O=HC Services,C=DE
ca.keyspec=2048
ca.keytype=RSA
ca.signaturealgorithm=SHA1WithRSA
ca.validity=7300
ca.policy=1.2.3.3.4
ca.tokenpassword=null # sonst wird gefragt
  • $EJBCA_HOME/conf/mail.properties
mail.user=user
mail.password=lala
mail.smtp.host=mailhost
mail.smtp.auth=true
mail.from=ca-donotreply@hc-services.de
web.contentencoding=UTF-8
  • $EJBCA_HOME/conf/ocsp.properties
ocsp.defaultresponder=CN=Test OCSP,OU=PKI,O=HC Services,C=DE
  • $EJBCA_HOME/conf/web.properties
java.trustpassword=U|tr@s€cret2
superadmin.cn=Testca SuperAdmin
superadmin.dn=CN=${superadmin.cn},OU=PKI,O=HC Services,C=DE
superadmin.password=lala123
superadmin.batch=true
httpsserver.password=lala345
httpsserver.hostname=testca.hc-services.de
httpsserver.dn=CN=${httpsserver.hostname},O=HC Services,C=DE
httpserver.pubhttp=80
httpserver.pubhttps=443
  • $EJBCA_HOME/conf/xkms.properties
xkms.request.acceptedcas=TestCA

EJBCA installieren

  • EJBCA kompilieren
ant bootstrap
cp $EJBCA_HOME/lib/bc*.jar $JBOSS_HOME/server/default/lib/
  • Jboss starten
$APPSRV_HOME/bin/run.sh &
  • EJBCA installieren
ant install
  • Jboss stoppen
$APPSRV_HOME/bin/shutdown.sh -S
  • Ejbca deployen und CA anlegen
ant deploy
  • Variablen persistent setzen in /etc/profile
JAVA_HOME="/opt/java"
APPSRV_HOME="/opt/jboss"
JBOSS_HOME="/opt/jboss/"
ANT_HOME="/opt/ant"
ANT_OPTS="-Xmx512m"
EJBCA_HOME="/opt/ejbca"
PATH=$JAVA_HOME/bin:$ANT_HOME/bin:$EJBCA_HOME/bin:$PATH

export JAVA_HOME APPSRV_HOME JBOSS_HOME ANT_HOME ANT_OPTS EJBCA_HOME PATH 
  • Jboss starten
$APPSRV_HOME/bin/run.sh &

Externe RA GUI (vorerst nur JBoss 5)

Vorbereitungen

  • Jboss und Java installieren wie beschrieben

Externe DB

  • auf externer RA
mysql -u root -p
mysql> create database ejbca_messages;
mysql> grant all privileges on ejbca_messages.* to ejbca_ext@'%' identified by 'blablabla';
mysql> quit

Zertifikate für HTTPS und Secure Messaging

  • für HTTPS einen JKS ausstellen, der das Webserverzertifikat und Key der Externen RA beinhaltet
  • für Secure Messaging ein PKCS12 (external-ra.p12) ausstellen, Typ Enduser
  • external-ra.p12 nach $EJBCA_HOME/P12 kopieren

Interne EJBCA konfigurieren

  • $EJBCA_HOME/conf/externalra.properties
externalra.enabled=true
externalra.source-1.jdbc-url=jdbc:mysql://externer-ca-host/ejbca_messages
externalra.source-1.username=ejbca_ext
externalra.source-1.password=blablabla
  • EJBCA re-deployen
cd $EJBCA_HOME && ant deploy
  • jboss restarten

RA Service Worker anlegen

  • per Browser auf Adminbereich gehen
  • unter "Edit Services" einen neuen Service (External-RA) hinzufügen
  • '"Edit Service" klicken
  • Select Worker
    • Custom Worker
  • Custom Worker Class Path
    • org.ejbca.extra.caservice.ExtRACAServiceWorker
  • Custom Worker Properties
externalra-caservice.keystore.path=/opt/ejbca/p12/external-ra.p12
externalra-caservice.keystore.pwd=blablablabla
externalra-caservice.whitelist=org.ejbca.extra.db.CertificateRequestRequest,org.ejbca.extra.db.KeyStoreRetrievalRequest
externalra-caservice.signature.required=true
externalra-caservice.encryption.required=false
externalra-caservice.raissuer=TestCA
externalra-caservice.persistenceunit=RAMessage1DS
  • Select Interval
    • Periodical Intervall
  • Period
    • 10 Seconds
  • Select Action
    • No Action
  • Active
    • anklicken
  • Description
    • External RA Worker
  • Speichern

Externe EJBCA (RA) konfigurieren

  • Zertifikat des external-ra.p12 als PEM herunterladen und in $EJBCA_HOME/cert/external-ra.pem speichern
  • JKS mit dem HTTPS Zertifikat der Externen RA herunterladen und auch in $EJBCA_HOME/cert/servercert-ra.jks speichern
  • superadmin.p12 oder ein anderes Administratorzertifikat nach $EJBCA_HOME/cert/superadmin.p12 kopieren
  • CA Zertifikat als PEM PEM herunterladen und in $EJBCA_HOME/cert/cacert.pem speichern
  • $EJBCA_HOME/conf/externalra-gui.properties
webserver.http.bindport=80
webserver.https.bindport=443
webserver.keystore.file=/opt/ejbca/cert/servercert-ra.jks
webserver.keystore.password=websecret

externalra-gui.datasource.jdbc-url=jdbc:mysql://127.0.0.1/ejbca_messages
externalra-gui.datasource.username=ejbca_ext
externalra-gui.datasource.password=blablabla

externalra-gui.caservicecert=/opt/ejbca/cert/external-ra.pem
externalra-gui.keystore=/opt/ejbca/cert/superadmin.p12
externalra-gui.keystorepassword=lala123
externalra-gui.issuerchain=/opt/ejbca/cert/cacert.pem
  • Externe RA GUI deployen
ant externalra-gui-deploy
  • Jboss Starten
/etc/init.d/jboss start

Troubleshooting

Probleme mit der Kommunikation

Wenn die interne CA vor der externen gestartet wird, gibt es Probleme mit dem Worker, weil er sich nicht zur DB verbinden kann. Selbst wenn diese dann später hochgefahren ist.

Probleme mit JBoss 6

1. Die Externe RA startet nicht weil der Hibernate Search fehlschlägt mit

Deployment "persistence.unit:unitName=externalra-gui.war#ExternalRAGUIMessageDS" is in error due to the following reason(s): 
java.lang.NoSuchMethodError: org.hibernate.util.SoftLimitMRUCache.<init>(I)V

2. Bei der internen CA gibt es probleme mit dem Timer

 ERROR [TimerTask] Error invoking timeout for timer: 
[id=5e3d4892-4d99-42e6-aeec-448e65ba55cf timedObjectId=jboss.j2ee:ear=ejbca.ear,jar=ejbca-ejb.jar,
 name=ServiceSessionBean,service=EJB3 auto-timer?:false persistent?:true 
 timerService=org.jboss.ejb3.timerservice.mk2.TimerServiceImpl@3938f65e initialExpiration=2011-07-28 20:07:57.255 
 intervalDuration(in milli sec)=0 nextExpiration=null timerState=IN_TIMEOUT: 
 org.jboss.injection.manager.spi.InjectionException: javax.naming.NamingException: 
 Could not dereference object [Root exception is javax.naming.NamingException: 
 Could not dereference object [Root exception is javax.naming.NameNotFoundException: 
 AuthorizationSessionBean not bound]]
Meine Werkzeuge