LINUX.ORG.RU
решено ФорумAdmin

Установка валидного сертификата в ejabberd

 ,


1

2

Hi, folks.

Суть такова. Есть ejabberd 2.1.13 на centos 6.6. Пытаюсь установить для него сертификат от GlobalSign. Сертификат валидный, не просроченный успешно работает в nginx, dovecot, postfix. Ситуация в следующем, есть домен example.com, поднят ejabberd работающий. При попытке добавления сертифката при подключении с Gajim получаем следующие спецэффекты:

Если certfile.pem создан как host.key + host.crt - получаем сообщение что невозможно проверить сертификат т.к. отсутствует сертификат промежуточного УЦ (что справедливо и понятно).

Если certfile.pem создан как host.key + host.crt + middle_ca.crt - получаю на Gajim ошибку

SSL Error: Certificate has expired
тоже самое происходит если в конец еще добавить root_ca.crt при этом если ткнуть на «игнорировать ошибку» то все штатно подключается.

Важное замечание, сертификат выдан на хост server.example.com, я же хочу чтобы домен был example.com с JID вида user@example.com. В hosts в ejabberd.conf выглядит так:

{ hosts, [ "example.com", "server.example.com" ] }.
Причем если оставить только example.com или server.example.com ситуация не меняется - все та же ошибка сертифката.

В чем может быть проблема? Дополнительный вопрос, по стандартам(?) требуется ли чтобы CN указанный в сертфикате совпадал с доменной частью JID?

Спасибо.

требуется ли чтобы CN указанный в сертфикате совпадал с доменной частью JID?

Для s2s не требуется, там даже самоподписанный пихнуть можно и проверяться ничо не будет. Клиенты проверяют каждый как сам хочет, но лучше чтоб совпадало всё.

INFOMAN ★★★★★
()
Ответ на: комментарий от Harald

Судя по наличию pyOpenSSL в выводе repoquery --requires gajim - то видимо OpenSSL:

repoquery --requires gajim
/bin/bash
/bin/sh
bind-utils
dbus-python
gnome-python2-gconf
libXss.so.1()(64bit)
libatk-1.0.so.0()(64bit)
libc.so.6()(64bit)
libc.so.6(GLIBC_2.2.5)(64bit)
libc.so.6(GLIBC_2.3.4)(64bit)
libc.so.6(GLIBC_2.4)(64bit)
libcairo.so.2()(64bit)
libfontconfig.so.1()(64bit)
libfreetype.so.6()(64bit)
libgdk-x11-2.0.so.0()(64bit)
libgdk_pixbuf-2.0.so.0()(64bit)
libgio-2.0.so.0()(64bit)
libglib-2.0.so.0()(64bit)
libgmodule-2.0.so.0()(64bit)
libgobject-2.0.so.0()(64bit)
libgtk-x11-2.0.so.0()(64bit)
libgtkspell.so.0()(64bit)
libpango-1.0.so.0()(64bit)
libpangocairo-1.0.so.0()(64bit)
libpangoft2-1.0.so.0()(64bit)
pygtk2-libglade
python
python-sqlite2
rtld(GNU_HASH)
/bin/sh
avahi-ui-tools
bind-utils
dbus-python
farsight2-python
gnome-python2-bonobo
gnome-python2-desktop
gnome-python2-gnome
gnupg
gstreamer-python
gtkspell
hicolor-icon-theme
libXScrnSaver
notify-python
pyOpenSSL
python-GnuPGInterface
python-crypto

Gajim версии 0.14.4 дистрибутив тоже Centos 6.6.

trancefer ★★
() автор топика
Ответ на: комментарий от Harald

Попробовал с Pidgin 2.7.9:

The certificate is not trusted because no certificate that can verify it is currently trusted.

openssl с сервера и клиента (там где Gajim):

openssl s_client -verify 5 -host server.example.com -port 5223 -CAfile ./globalsign.crt

...
Verify return code: 0 (ok)

В globalsign.crt - корневой и промежуточный сертификаты.

trancefer ★★
() автор топика
Ответ на: комментарий от trancefer

Аналогично ok с клиента вместе с

-CAfile /etc/ssl/certs/ca-bundle.crt
-CAfile /etc/ssl/certs/ca-bundle.trust.crt

trancefer ★★
() автор топика

Важное замечание, сертификат выдан на хост server.example.com, я же хочу чтобы домен был example.com

Хоти. Клиенты по какому домену лезут? Если на example.com, то ничего не получиться.

Дополнительный вопрос, по стандартам(?) требуется ли чтобы CN указанный в сертфикате совпадал с доменной частью JID?

Ну судя по RFC и еще одному драфту, XMPP должен смотреть на alternative names. Хотя клиенты могут положить на этот RFC.

Vovka-Korovka ★★★★★
()
Ответ на: комментарий от trancefer

В globalsign.crt - корневой и промежуточный сертификаты.

На кой промежуточные? Должно хватить корневого.

Vovka-Korovka ★★★★★
()
Ответ на: комментарий от Vovka-Korovka

В клиентах указан jid user@example.com, при этом вручную указано подключаться через server.example.com + на него же указывает SRV.

trancefer ★★
() автор топика
Ответ на: комментарий от DeadEye

Решено

Для XMPP нужны особые сертификаты отличающиеся от обычных наличием дополнительных полей:

http://blog.hamzahkhan.com/2012/11/09/ssl-certificates-for-xmpp/

http://serverfault.com/questions/591844/are-xmpp-certificates-different-than-regular-ones

Косвенно подтверждается тем, что мой сертификат не взлетел и с другим сервером (пробовал на Prosody) c точно такими же симптомами.

trancefer ★★
() автор топика
Ответ на: Решено от trancefer

Ясненько. Спасибо. Собственно, жду сертификатов от Let's Encrypt.

DeadEye ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.