Назад | Перейти на главную страницу

Рабочий сертификат TLS для сервера jabberd2

Я хочу запустить сервер jabberd2 (V 2.40) с безопасными клиентскими соединениями.
Я выполнил инструкции из документации, и сервер запущен:
https://github.com/jabberd2/jabberd2/wiki/InstallGuide-OpenSSLConfiguration

Но вроде нет безопасного клиентского соединения.
Когда я следую подсказкам для запроса сертификата, однорангового сертификата нет:
Получение цепочки SSL-сертификатов с jabber-сервера

openssl s_client -connect my.jabber.server.net:5222 </dev/null

CONNECTED(00000003)
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 648 bytes and written 117 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE

Фактическая конфигурация

  <local>
         <pemfile>/etc/jabberd2/jabber.pem</pemfile>
         <verify-mode>7</verify-mode>
         <require-starttls>1</require-starttls>
         <ciphers>EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH</ciphers>
    <id register-enable='mu'>domainname.de</id>
  </local>

Следуя подсказкам в c2s.xml, я изменил это на

  <local>
    <id realm='domainname.de'
        pemfile='/etc/jabberd2/jabber.pem'
        ciphers='EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH'
        verify-mode='7'
        require-starttls='mu'
        instructions='Geben Sie einen gueltigen Benutzernamen mit Passwort an um einzuloggen!'
    >domainname.de</id>
    <id password-change='mu' />
  </local>

Тогда тест openssl успешен с

---
No client certificate CA names sent
---
SSL handshake has read 1700 bytes and written 138 bytes
---
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES256-GCM-SHA384
Server public key is 1024 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : ECDHE-RSA-AES256-GCM-SHA384
    Session-ID:
    Session-ID-ctx:
    Master-Key: 720846E32D...CA23
    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    Start Time: 1484331794
    Timeout   : 300 (sec)
    Verify return code: 18 (self signed certificate)
---

Но теперь НИКАКОЙ клиент не будет подключаться к серверу!
Я тестировал его с помощью pidgin и psi, и оба сообщают об ошибке подтверждения ssl!

Читая пример c2s.xml, я нахожу:

<id realm='company.int'
    pemfile='/etc/jabberd2/server.pem'
    verify-mode='7'
    cachain='/etc/jabberd2/client_ca_certs.pem'
    require-starttls='mu'
    register-enable='mu'
    instructions='Enter a username and password to register with this server.'
    register-oob='http://example.org/register'
    password-change='mu'
>example.net</id>

Так, может быть, отсутствует client_ca_certs.pem?
Но я понятия не имею, как его сгенерировать?

Любая помощь была бы фантастической.

Jabber использует расширение протокола STARTTLS на порту 5222, поэтому вам необходимо включить расширение -starttls xmpp при тестировании:

openssl s_client -connect my.jabber.server.net:5222 -starttls xmpp </dev/null

Все параметры подключения для виртуальных хостов 5222 устанавливаются непосредственно как атрибуты на <id ... /> тег.

Если включено, прямое туннелирование XMPP в SSL возможно на порте 5223. Параметры, которые вы настраиваете как теги в <local> ... <pemfile> etc... настроить порт 5223. Если вы включите это, вы можете тестировать без -startls вариант, как вы пытались:

openssl s_client -connect my.jabber.server.net:5223 </dev/null