Установка PKI-системы EJBCA на Centos 7

EJBCA

EJBCA — это OpenSource ПО для создания Certification Authority уровня предприятия. EJBCA используется для создания центра сертификации сертификатов инфраструктуры открытого ключа (PKI)

Подготовка

Устанавливаем софт

$ sudo yum install -y nano tar unzip java-1.8.0-openjdk-devel ant psmisc mariadb bc patch

Установка СУБД MariaDB

Устанавливаем и запускаем MariaDB, проверяем статус

$ sudo yum install -y mariadb-server
$ sudo systemctl enable --now mariadb
$ systemctl status mariadb

Первоначальная настройка MariaDB, устанавливаем пароль для пользователя root

$ sudo mysql_secure_installation
Enter current password for root (enter for none):
Set root password? [Y/n]
Set root password? [Y/n]
New password: %password
%
Re-enter new password: %password%
Password updated successfully!
Remove anonymous users? [Y/n]
Disallow root login remotely? [Y/n]
Remove test database and access to it? [Y/n]
Reload privilege tables now? [Y/n]
Thanks for using MariaDB!

Создаем базу, нового пользователя БД, устанавливаем пароль пользователя

$ sudo mysql -u root -p
mysql> CREATE DATABASE ejbcatest CHARACTER SET utf8 COLLATE utf8_general_ci;
mysql> GRANT ALL PRIVILEGES ON ejbcatest.* TO 'ejbca'@'localhost' IDENTIFIED BY 'ejbca';
mysql> exit

Установка PKI-системы EJBCS

Создадим нового пользователя ejbca, от которого будет работать EJBCA

$ sudo useradd -m -U -r -d /opt/ejbca ejbca

Задаем пароль пользователю

$ passwd ejbca
New password:
Retype new password:

Добавляем пользователя ejbca в группу wheel, то бы у него появились права суперпользователя (sudo)

$ sudo usermod -aG wheel ejbca

Переключаемся на нашего пользователя, переходим в домашний каталог

$ sudo su - ejbca
$ cd

Скачиваем дистрибутив и распаковываем его в домашний каталог текущего пользователя (/opt/ejbca)

$ wget https://netcologne.dl.sourceforge.net/project/ejbca/ejbca6/ejbca_6_15_2_6/ejbca_ce_6_15_2_6.zip
$ unzip ejbca_ce_6_15_2_6.zip

Если создавали другие БД и пользователя, правим логин/пароль в установочном скрипте

$ nano /opt/ejbca/ejbca_ce_6_15_2_6/bin/extra/ejbca-setup.sh

По-умолчанию:
host: localhost
db: ejbcatest
dbuser: ejbca
dbuserpass: ejbca

Запускаем установку EJBCA

$ ./ejbca_ce_6_15_2_6/bin/extra/ejbca-setup.sh

Запуск скрипта надо выполнять от текущего пользователя, не root
Скрипт ejbca-setup.sh надо обязательно запускать из каталога, в который распаковывали EJBCA.

В процессе установки отвечаем на вопросы:

This installs the EJBCA PKI
found RedHat/CentOS
EJBCA will be installed as OS user 'ejbca'

please install dependencies with:
yum install tar unzip java-1.8.0-openjdk-devel ant psmisc mariadb bc patch

Please select "Yes" if you did so, but not before
1) Yes
2) No
#? 1

This will destroy your complete EJBCA installation in database ejbcatest
Do you want this?
1) Yes
2) No
#? 1

LAST CHANCE TO STOP THIS
Do you really want to destroy your EJBCA installation in database ejbcatest?
1) Yes
2) No
#? 1

[...]

You can now install the superadmin.p12 keystore, from /opt/ejbca/ejbca_ce_6_15_2_6/p12, in your web browser, using the password xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx, and access EJBCA at https://localhost:8443/ejbca

Настраиваем Firewall

Открываем порты

$ sudo firewall-cmd --add-port=8443/tcp --permanent
$ sudo firewall-cmd --add-port=8442/tcp --permanent
$ sudo firewall-cmd --add-port=8080/tcp --permanent
$ sudo firewall-cmd --reload

Команды для запуска/оставновки сервиса EJBCA

Команды выпольняются от пользователя ejbca

Start EJBCA:
$ cd ~
$ nohup wildfly/bin/standalone.sh -b 0.0.0.0 > /dev/null 2> /dev/null &

Stop EJBCA:
$ cd ~
$ ./wildfly/bin/jboss-cli.sh --connect :shutdown

Reload EJBCA:
$ cd ~
$ ./wildfly/bin/jboss-cli.sh --connect :reload

EJBCA как системный сервис в Linux

Создаем юнит-файл ejbca.service

$ sudo nano /etc/systemd/system/ejbca.service

[Unit]
Description=EJBCA Server Daemon
After=network-online.target

[Service]
Type=simple
User=ejbca
Group=ejbca
UMask=007
WorkingDirectory=/opt/ejbca
ExecStart=/opt/ejbca/wildfly/bin/standalone.sh -b 0.0.0.0
ExecReload=/opt/ejbca/wildfly/bin/jboss-cli.sh --connect :reload
ExecStop=/opt/ejbca/wildfly/bin/jboss-cli.sh --connect :shutdown
Restart=on-failure
TimeoutStopSec=300

[Install]
WantedBy=multi-user.target

Если EJBCA был запущен, останавливаем его (от пользователя ejbca)

$ cd ~ && ./wildfly/bin/jboss-cli.sh --connect :shutdown

После создания юнит-файла, необходимо перезагрузить процесс самого systemd, для подхвата изменений. Затем запускаем сервис и добавляем его в автозагрузку. Проверяем статус

$ sudo systemctl daemon-reload
$ sudo systemctl enable --now ejbca
$ systemctl status ejbca

Полезная информация

После установка EJBCA система выдает информацию о расположении сертификата superadmin.p12 и пароля к нему:

/opt/ejbca/ejbca_ce_6_15_2_6/p12/superadmin.p12

Его надо скачать и импортировать в бразуер, например firefox:

Настройки - Приватность и защита - Просмотр сертификатов - Ваши сертификаты - Импортировать

так же пароль сертификата superadmin.p12 можно узнать, выполнив команду

$ grep "superadmin.password" /opt/ejbca/ejbca-custom/conf/web.properties

Админка расположена по адресу:

https://localhost:8443/ejbca/adminweb/

Максим Макаров

У блога появился хостинг, его любезно предоставила компания Облакотека. Облакотека - облачные сервисы для создания и управления виртуальной ИТ-инфраструктурой.
Если вам понравился мой блог и вы хотели бы видеть на нем еще больше полезных статей, большая просьба поддержать этот ресурс.

Оцените автора
IT Draft
Добавить комментарий

Нажимая на кнопку "Отправить комментарий", я даю согласие на обработку персональных данных и принимаю политику конфиденциальности.

  1. Louie

    Эх, всегда хотел эту штуку себе поставить, но софт настолько сырой и капризный, что голову разобьешь. Толковая статья. Лишь несколько небольших опечаток:
    $ passwd ejbcs // опечатка в имени
    $ sudo su ejbca // лучше заменить на $ sudo su — ejbca чтобы корректно обработались переменные
    $ sudo nano /opt/ejbca/ejbca_ce_6_15_2_6/bin/extra/ejbca-setup.sh // sudo не нужно. nano в centos7 надо предварительно установить

    дальше не прошел. скрипт установки кривой. «{«outcome» => «success»}
    Communication error: java.util.concurrent.CancellationException: Operation was cancelled: Operation was cancelled
    «

    1+
    Ответить
    1. Максим Макаров автор

      Благодарю за замечания

      0
      Ответить
  2. Сергей

    Делал по статье, на шаге запуска скрипта ошибки:
    ustomejbca.message:

    appserver.error.message:

    va_replacings_in_application.xml:
    [echo] Enabled module status.war
    [echo] Enabled module certstore.war
    [echo] Enabled module crlstore.war
    [mkdir] Created dir: /opt/ejbca/ejbca_ce_6_15_2_6/hwtoken

    customejbca.message:

    appserver.error.message:

    plugin-bootstrap-build:
    [ear] Building ear: /opt/ejbca/ejbca_ce_6_15_2_6/dist/ejbca.ear

    customejbca.message:

    appserver.error.message:

    signjar:
    [echo] Specify -Dsignjar.keystore=/path/keystore.jks if you want to sign the release.

    customejbca.message:

    appserver.error.message:

    signjar.internal:

    build:

    deployear:

    customejbca.message:

    appserver.error.message:

    set-paths-jboss7:

    set-paths:

    jee:check:
    [echo] Using appserver.home : /opt/ejbca/wildfly

    jee:deployear:
    [copy] Copying 1 file to /opt/ejbca/wildfly/standalone/deployments

    customejbca.message:

    appserver.error.message:

    set-paths-jboss7:

    set-paths:

    notifyDeploymentScannerJBoss7:

    notifyDeploymentScanner:

    customejbca.message:

    appserver.error.message:

    showtime:
    [echo] Task completed 2020-07-30 15:08:56 +0300.

    BUILD SUCCESSFUL
    Total time: 1 minute 4 seconds
    wait 240s for deploying EJBCA
    EJBCA not deployed after 240s, exit
    что не так?

    0
    Ответить
    1. Максим Макаров автор

      Возможно ресурсов не хватает. Система использует java, а она достаточно прожорливая

      0
      Ответить
      1. Сергей

        Благодарю за оперативный ответ, увеличу ресурсы, попробую снова развернуть.

        0
        Ответить
        1. Максим Макаров автор

          Если ошибка повторится, дайте знать. Завтра попробую развернуть на чистой виртуалке. Может что упустил, когда писал мануал.

          0
          Ответить
  3. Сергей

    Увеличил ресурсы в разы, всё равно EJBCA not deployed after 240s, exit

    1+
    Ответить
    1. Сергей

      Успешно развернул, но на машине с DHCP и дефолтным именем, со статическим IP и моим именем машины не разворачивает, в остальном машины одинаковые, CentOS 8, кстати.

      1+
      Ответить