Реми ван Элст. SSL-сертификат для ejabberd, 2013

Перевод статьи: Ejabberd SSL Certificate

Автор: Реми ван Элст (Remy van Elst)

В этом руководстве показано, как настроить SSL-сертификат для использования с ejabberd. Руководство охватывает вопросы создания запроса на подпись сертификата - Certificate Signing Request, подготовку сертификата для использования в ejabberd и установку сертификата.

В этом руководстве подразумевается использование уже настроенного ejabberd. Руководство протестировано в Debian и Ubuntu, но должно подойти для любого сервера ejabberd.

1. Введение

Для получения SSL-сертификата для сервера ejabberd нужно несколько вещей:

При помощи сертификата можно защитить XMPP-подключения и содержимое переговоров. Таким образом другим становится значительно сложнее прослушивать переговоры. В сочетании с включенным протоколом OTR это позволит создать сверхзащищённый канал для переговоров.

2. Создание запроса на подпись сертификата

Создадим каталог для хранения всех необходимых файлов и перейдём в него:

mkdir -p ~/Certificates/xmpp
cd ~/Certificates/xmpp

Теперь воспользуемся OpenSSL для создания приватного ключа и запроса на подпись сертификата - CSR. При помощи первой команды это можно сделать интерактивно, а при помощи второй - не интерактивно. Убедитесь, что задали правильное значение в поле Общее имя - Common Name (CN). В нём должен быть указан URL XMPP-сервера:

Интерактивная команда:

openssl req -nodes -newkey rsa:2048 -keyout private.key -out CSR.csr

Не интерактивная команда:

openssl req -nodes -newkey rsa:2048 -keyout private.key -out CSR.csr -subj "/C=NL/ST=State/L=City/O=Company Name/OU=Department/CN=chat.example.org"

В результате работы команды появятся два файла: CSR.csr и private.key. Теперь нужно передать запрос на подпись сертификата - CSR в удостоверяющий центр. Это может быть любой удостоверяющий центр. У меня есть успешный опыт использования Xolphin, но это могут быть другие удостоверяющие центры, например, Digicert и Verisign.

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

3. Создание сертификата для ejabberd

Как только у вас появятся все необходимые файлы (приватный ключ, сертификат, цепочка сертификатов), поместите их в каталог и продолжайте. Нужно объединить эти файлы в один файл ejabberd.pem.

Они должны располагаться в следующем порядке:

Замените имена файлов в следующей команде на ваши и создайте PEM-файл:

cat private.key >> ejabberd.pem
cat certificate.pem >> ejabberd.pem
cat chain-1.pem >> ejabberd.pem
cat chain-2.pem >> ejabberd.pem

Если всё сделано, то продолжим.

4. Установка сертификата в ejabberd

Скопируйте сертификат на все ваши серверы ejabberd:

scp ejabberd.pem user@srv1.example.org:

Поместите сертификат в каталог /etc/ejabberd:

cp ejabberd.pem /etc/ejabberd/ejabberd.pem

Теперь отредактируем файл конфигурации ejabberd так, чтобы он указывал на новый сертификат:

vim /etc/ejabberd/ejabberd.cfg

Проверьте, что файл конфигурации указывает на сертификат. При необходимости исправьте:

[...]
{listen, [
  {5222, ejabberdc2s, [ {access, c2s}, {shaper, c2sshaper}, {maxstanzasize, 65536},
         starttls, {certfile, "/etc/ejabberd/ejabberd.pem"}]},
[...]
{s2susestarttls, true}.
{s2s_certfile, "/etc/ejabberd/ejabberd.pem"}.
[...]

После этого перезапустите ejabberd:

/etc/init.d/ejabberd restart

Теперь можно воспользоваться любым XMPP-клиентом, чтобы подключиться к SSL/TLS и убедиться, что он работает.

5. Примечания переводчика

Как и в случае со статьёй "Заметки о Dockerfile", сейчас не помню - с чего вдруг я решил перевести эту статью.

Сейчас смотрю и недоумеваю от количества воды в ней. Ну да ладно, "пусть будет". Возможно я решил её перевести для комплекта с предыдущим переводом про настройку ejabberd.

Написать автору перевода