Поднимаем связку EJBCA 3.9.1 + JBOSS 5.1.0.GA + ant 1.7.1 + jce USJPF 6 + jdk 6u17 на CentOS 5.3
Добрый день, Хабрасообщество!
Почему-то, незаслуженно, на хабре нет ни одной статьи, посвященной установке центра сертификации (CA) в линукс.
Я хочу рассказать немного про Enterprise Java Beans Certificate Authority (EJBCA) и его установку.
Статья основывается на статье HowTo InstallSLCSServer2 InstallEJBCA, а также ejbc installation guide, ну и собственном опыте установки.
EJBCA – это Центр Сертификации (Certificate Authority) инфраструктуры открытых ключей (PKI), который основан на технологии J2EE. Это надежный, высокопроизводительный, платформонезависимый, гибкий и модульный Центр Сертификации, который может использоваться автономно или интегрироваться в другие приложения J2EE. EJBCA является PKI класса enterprise, что означает, что его можно использовать для построения законченной инфраструктуры PKI организации. EJBCA распространяется под GNU LGPL
Скриншоты web интерфейса EJBCA:


Вообще, типовое решение, которое можно построить с помощью EJBCA выглядит так:

но мы будем ставить простую тестовую установку (подробнее про архитектуру ejbca смотрите на ejbca.org/architecture.html )
Т.к. установка дефолтная, никакие настройки в ejbca не менялись. Установка рассчитана на тестовую работу. Чтобы настроить ejbc для настоящего применения, смотрите маны на сайте ejbca.org
Итак, начнём:
Скачиваем необходимые пакеты
1) jdk 6 update 16
jdk-6u17-linux-i586-rpm.bin
2) JCE Unlimited Strength Jurisdiction Policy Files 6 (в самом низу страницы в разделе Other Downloads)
jce_policy-6.zip
3) apache ant
apache-ant-1.7.1-bin.zip
4) JBOSS application server
jboss-5.1.0.GA.zip
5) ejbca
ejbca_3_9_1.zip
Установка
обновимся:
yum update
устанавливаем jdk
[root@localhost ~]# mv jdk-6u16-linux-i586-rpm.bin /usr/local/src/
[root@localhost ~]# cd /usr/local/src/
[root@localhost ~]# sh jdk-6u16-linux-i586-rpm.bin
добавим переменную JAVA_HOME
[root@localhost ~]# vim .bashrc
export JAVA_HOME=/usr/java/jdk1.6.0_16/
[root@localhost ~]# source .bashrc
проверим, какая версия java выбрана (в случае, если у вас стоит ещё и OpenjDK, то поможет вот эта статья о применении утилиты alternatives при установке java на CentOS chrisschuld.com/2008/10/installing-sun-java-on-centos-5-2 )
[root@localhost ~]# java -version
java version «1.6.0_16»
Java(TM) SE Runtime Environment (build 1.6.0_16-b01)
Java HotSpot(TM) Client VM (build 14.2-b01, mixed mode, sharing)
устанавливаем ant
[root@localhost ~]# mv apache-ant-1.7.1-bin.zip /usr/local/
[root@localhost ~]# cd /usr/local/
[root@localhost ~]# unzip apache-ant-1.7.1-bin.zip
[root@localhost ~]# cd
добавим переменную ANT_HOME
[root@localhost ~]# vim .bashrc
export PATH=$PATH:/usr/local/apache-ant-1.7.1/bin/
[root@localhost ~]# source .bashrc
Проверяем работу ant (то, что ниже выводится — хорошо=))
[root@localhost ~]# ant
Buildfile: build.xml does not exist!
Build failed
устанавливаем JBOSS
[root@localhost ~]# mv jboss-5.1.0.GA.zip /usr/local/
[root@localhost ~]# cd /usr/local/
[root@localhost local]# jar -xvf jboss-5.1.0.GA.zip
[root@localhost local]# cd
добавляем переменную JBOSS_HOME и перепишим определенные до этого переменные для элегантности
[root@localhost ~]# vim .bashrc
export JAVA_HOME=/usr/java/jdk1.6.0_16/
export ANT_HOME=/usr/local/apache-ant-1.7.1/
export JBOSS_HOME=/usr/local/jboss-5.1.0.GA/
export PATH=$PATH:$JBOSS_HOME/bin:$ANT_HOME/bin
[root@localhost ~]# source .bashrc
изменяем права на директорию c бинарниками JBOSS'a
[root@localhost ~]# chmod -R 754 /usr/local/jboss-5.1.0.GA/bin
устанавливаем файлы политик JCE Unlimited Strength Jurisdiction Policy Files 6 и делаем резервную копию исходных файлов политик
[root@localhost ~]# mv jce_policy-6.zip /usr/src/
[root@localhost ~]# cd /usr/src/
[root@localhost src]# unzip jce_policy-6.zip
[root@localhost src]# cd /usr/java/jdk1.6.0_16/jre/lib/security/
[root@localhost security]# cp local_policy.jar local_policy.jar.dist
[root@localhost security]# cp US_export_policy.jar US_export_policy.jar.dist
[root@localhost security]# cp /usr/src/jce/local_policy.jar.
[root@localhost security]# cp /usr/src/jce/US_export_policy.jar.
[root@localhost security]# cd
уставливаем EJBC
[root@localhost ~]# mv ejbca_3_9_1.zip /usr/src/
[root@localhost ~]# cd /usr/src/
[root@localhost src]# unzip ejbca_3_9_1.zip
[root@localhost src]# cd ejbca_3_9_1/conf/
создаём файлы настроек ejbca (тут я в них ничего не меняю, всё по дефолту, но именно на этом этапе в качестве БД можно указать, например MySQL, пароль администратора и т.д.)
[root@localhost conf]# cp catoken.properties.sample catoken.properties
[root@localhost conf]# cp cmp.properties.sample cmp.properties
[root@localhost conf]# cp custom.properties.sample custom.properties
[root@localhost conf]# cp database.properties.sample database.properties
[root@localhost conf]# cp ejbca.properties.sample ejbca.properties
[root@localhost conf]# cp externalra.properties.sample externalra.properties
[root@localhost conf]# cp jaxws.properties.sample jaxws.properties
[root@localhost conf]# cp log4j.properties.sample log4j.properties
[root@localhost conf]# cp log.properties.sample log.properties
[root@localhost conf]# cp mail.properties.sample mail.properties
[root@localhost conf]# cp ocsp.properties.sample ocsp.properties
[root@localhost conf]# cp protection.properties.sample protection.properties
[root@localhost conf]# cp web.properties.sample web.properties
[root@localhost conf]# cp xkms.properties.sample xkms.properties
[root@localhost conf]# cd…
[root@localhost ejbca_3_9_1]# ant bootstrap
[ejbdoclet] Java heap space
[ejbdoclet] ParameterImpl instances: 20
[ejbdoclet] MethodImpl instances: 3394
[ejbdoclet] ConstructorImpl instances: 347
[ejbdoclet] SimpleNode instances: 0
[ejbdoclet] SourceClass instances: 318
[ejbdoclet] XDoc instances: 0
[ejbdoclet] DefaultXTag instances: 0
[ejbdoclet] BinaryClass instances: 321
[ejbdoclet] UnknownClass instances: 71
[ejbdoclet] Total memory: 63
[ejbdoclet] Free memory: 0
[ejbdoclet] Try to increase heap size. Can be done by defining ANT_OPTS=-Xmx640m
[ejbdoclet] See the JDK tooldocs.
BUILD FAILED
/usr/src/ejbca_3_9_1/build.xml:63: The following error occurred while executing this line:
/usr/src/ejbca_3_9_1/compile.xmli:278: Java heap space
если возникает данная ошибка (а она у меня всегда вылезала), то делаем так
[root@localhost ejbca_3_9_1]# export ANT_OPTS=-Xmx640m
и заново выполняем
[root@localhost ejbca_3_9_1]# ant bootstrap
ждём, пока не будет
BUILD SUCCESSFUL
На сайте EJBCA написано следующее при установке:
NOTE. JBoss 5.0.0 have a bug causing issues with the BC JCE provider. To work around this you can copy the files EJBCA_HOME/lib/bc*.jar to JBOSS_HOME/server/default/lib/. Remember this when it's time for upgrades!
Ну что же, делаем, как говорят:
[root@localhost ejbca_3_9_1]# cp lib/bc*.jar /usr/local/jboss-5.1.0.GA/server/default/lib/
Запускаем JBOSS в соседнем терминале:
[root@localhost ~]# run.sh -b 0.0.0.0
нужно подождать 1-2 минуты, пока он не скажет:
00:38:25,692 INFO [AjpProtocol] Starting Coyote AJP/1.3 on ajp-0.0.0.0-8009
00:38:25,709 INFO [ServerImpl] JBoss (Microcontainer) [5.1.0.GA (build: SVNTag=JBoss_5_1_0_GA date=200905221053)] Started in 2m:18s:521ms
продолжаем установку EJBCA в первом терминале
[root@localhost ejbca_3_9_1]# ant install
когда скажет
BUILD SUCCESSFUL
то останавливаем JBOSS во втором терминале
CTRL+C
в первом терминале выполняем:
[root@localhost ejbca_3_9_1]# ant deploy
теперь нам надо импортировать сертификат админа ejbca из /usr/src/ejbca_3_9_1/p12/superadmin.p12 в браузер
В Firefox это делается так:
вкладки: Правка-Настройки-Дополнительно-Шифрование-Просмотр сертификатов-Ваши сертификаты-Импортировать и указываем путь /usr/src/ejbca_3_9_1/p12/superadmin.p12
дефолтный пароль, если не меняли в настройках: ejbca
Проверяем работу
запускаем JBOSS
[root@localhost ~]# run.sh -b 0.0.0.0
ждём 1-2 минуты, пока JBOSS стартует, запускаем браузер и идём по адресу
hostname:8443/ejbca/
добавляем исключение для сертификата сервера и всё – видим нашу веб-морду ejbca:

P.S. Дальше я пока разбираюсь и, надеюсь, продолжу в следующий раз)))