LINUX.ORG.RU
ФорумAdmin

клиентские ключи ssl для сервера jabberd2

 ,


0

1

Запутался совсем с созданием клиентских ключей для сервера jabberd2

В документации рассказано как создавать серверные ключи для работы модулей jabberd2 между собой и для работы серверов между собой. Для работы клиента и сервера как создать ключи не сказано.

В конфиге для этого есть закоментированный блок, но необходимо создать файл с ключами и сертификатом.

Я так понимаю что в jabberd с этими клиентскими ключами и сертификатами должно быть всё аналогично как в почтовом сервере.

Правильно ли я понял, что в файле pem должен быть закрытый ключ сервера, открытый ключ для клиента и самоподписной сертификат.

Работа осуществляется следующим образом, клиент принимает самоподписной сертификат сервера, после этого сервер передаёт клиенту открытый ключ? Если это так то как тогда создать эти ключи и сертификаты? Если кто сталкивался с этим или создавал подобные ключи и сертификаты для почтового сервера, помогите пожалуйста.

★★

Ответ на: комментарий от hizel

зачем вам ключи для клиентов?

Я точно не знаю нужны они или нет.

Судя по конфигу необходимо два файла pem один для связи сервера с другими серверами и модулей этого сервера между собой, а второй файл для связи клиентов с сервером.

Вот что в конфиге по поводу первого pem файла, для связи сервера с сервером.

<!-- File containing an SSL certificate and private key to use when
         setting up an encrypted channel with the router. From
         SSL_CTX_use_certificate_chain_file(3): "The certificates must be
         in PEM format and must be sorted starting with the subject's
         certificate (actual client or server certificate), followed
         by intermediate CA certificates if applicable, and ending
         at the highest level (root) CA" (the latter one being optional).
         If this is commented out, or the file can't be read, no attempt
         will be made to establish an encrypted channel with the router. -->

Вот сама настройка для этого файла:

<pemfile>/usr/etc/server.pem</pemfile>

Вот в документации команды для его создания:

openssl req -new -x509 -newkey rsa:1024 -days 3650 -keyout privkey.pem -out server.pem
openssl rsa -in privkey.pem -out privkey.pem
cat privkey.pem >> server.pem
rm privkey.pem
mv server.pem /usr/etc/server.pem
chown root:jabber /usr/etc/server.pem    
chmod 640 /usr/etc/server.pem

Работает ли этот серверный файл или нет я толком не знаю, он мне особо не нужен.

Вот что в конфиге по поводу клиентского файла:

<!--
cachain
         SSL CA chain. Used to verify client certificates.
         CA names published to client upon connection.
-->

Вот его настройки:

    <id realm='domen.org'
        pemfile='/usr/etc/server.pem'
        verify-mode='7'
        cachain='/usr/etc/client_ca_certs.pem'
        require-starttls='mu'
        register-oob='http://example.net/register'
        password-change='mu'
    >domen.org</id>

По поводу register-oob в конфиге вот что сказанно:

<!--
register-oob
         URL to be attached as an alternative, out-of-band registration
         method. Usually web-based http:// URL.
-->

Толком, что это такое я так и не понял.

По поводу команд для создания файла: client_ca_certs.pem в документации ничего не сказано. Вот я и не знаю как его создать, поэтому на форуме и спрашиваю.

Вместо него пробовал прописать: server.pem - не работает, клиент пишет что ssl рукопожатие завершилось не удачно.

Толком как работает клиент с сервером с использованием ssl я так и не разобрался.

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

поменяйте verify-mode='7' -> verify-mode='0'

север не будет проверять есть ли сертификат у клиента, что вам и не нужно

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

поменяйте verify-mode='7' -> verify-mode='0'

север не будет проверять есть ли сертификат у клиента, что вам и не нужно

Сделал.

запустил с подробным логированием: jabberd -D &

Соединение разорвано, ssl рукопожатие не удалось

вот что модуль c2s выдал, привожу кусок:

C2S : Thu Nov 30 13:52:13 2017 c2s.c:42 want write
C2S : Thu Nov 30 13:52:13 2017 c2s.c:529 write action on fd 9
C2S : sx (io.c:357) 9 ready for writing
C2S : sx (io.c:312) encoding 0 bytes for writing:
C2S : sx (chain.c:79) calling io write chain
C2S : sx (ssl.c:477) in _sx_ssl_wio
C2S : sx (ssl.c:406) secure channel not established, handshake in progress
C2S : sx (ssl.c:561) prepared 1443 ssl bytes for write
C2S : sx (io.c:378) handing app 1443 bytes to write
C2S : sx (io.c:379) tag 9 event 3 data 0x88ce1e0
C2S : Thu Nov 30 13:52:13 2017 c2s.c:113 writing to 9
C2S : Thu Nov 30 13:52:13 2017 c2s.c:117 1443 bytes written
C2S : sx (io.c:412) tag 9 event 0 data 0x0
C2S : Thu Nov 30 13:52:13 2017 c2s.c:37 want read
C2S : Thu Nov 30 13:52:13 2017 c2s.c:515 read action on fd 9
C2S : sx (io.c:206) 9 ready for reading
C2S : sx (io.c:212) tag 9 event 2 data 0x88ce1e0
C2S : Thu Nov 30 13:52:13 2017 c2s.c:47 reading from 9
C2S : Thu Nov 30 13:52:13 2017 c2s.c:106 read 205 bytes
C2S : sx (io.c:231) passed 205 read bytes
C2S : sx (chain.c:93) calling io read chain
C2S : sx (ssl.c:581) in _sx_ssl_rio
C2S : sx (ssl.c:585) loading 205 bytes into ssl read buffer
C2S : sx (ssl.c:406) secure channel not established, handshake in progress
C2S : sx (ssl.c:445) openssl error: error:140890C7:SSL routines:ssl3_get_client_certificate:peer did not return a certificate
C2S : sx (io.c:522) 9 state change from 0 to 6
C2S : sx (io.c:523) tag 9 event 7 data 0x0
C2S : Thu Nov 30 13:52:13 2017 c2s.c:534 close action on fd 9

По видимому, исходя вот из этой строки:

C2S : sx (ssl.c:445) openssl error: error:140890C7:SSL routines:ssl3_get_client_certificate:peer did not return a certificate

Всё равно пытается проверить сертификат.

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

По поводу verify-mode вот что сказано:

         verify-mode
         SSL verify mode - see SSL_CTX_set_verify(3), mode parameter.
         Sum of the following options:
         SSL_VERIFY_NONE                 0x00
                 SSL_VERIFY_PEER                 0x01
                 SSL_VERIFY_FAIL_IF_NO_PEER_CERT 0x02
                 SSL_VERIFY_CLIENT_ONCE          0x04
                 Use 7 to require all clients to present _valid_ certificates.

Действительно его надо в 0 и тогда проверять не будет.

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

Как создать этот сертификат?

Хочу попробовать его создать и посмотреть как тогда будет работать.

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