XMPP с реализацией TLS - PullRequest
       26

XMPP с реализацией TLS

0 голосов
/ 17 апреля 2019

Как я могу подключиться к XMPP-серверу по TLS?Я прочитал об этом и книгу, и документ RFC, и инструкции в общем обзоре понятны, но я упускаю детали.

Я создаю собственную собственную библиотеку XMPP , и как только я открываю сокет для клиента через порт 5222, я отправляю исходный XML для начала диалога, а затем:

<starttls xmlns='urn:ietf:params:xml:ns:xmpp-tls'/>

Сервер отвечает:

<proceed xmlns='urn:ietf:params:xml:ns:xmpp-tls'/>

После этого становится неясно, что мне делать, так как предположительно здесь должно произойти волшебство TLS, заставляя сервер отправлять сертификат клиенту.Как это сделать и как я узнаю, что он получен?

После этого в документах говорится, что поток должен быть прерван, а другой запущен ... означает ли это, что мне нужно отключить сокет илипросто закройте поток, отправив </stream:stream>?

1 Ответ

0 голосов
/ 23 апреля 2019

Я нашел решение проблемы. Моя ошибка заключалась в том, что после получения <proceed> я закрывал сокет, чтобы переключить его на порт 443, изменить протокол и другие подобные вещи.

Решение состояло не в том, чтобы закрыть соединение, а в том, чтобы включить шифрование на существующем соединении с помощью:

stream_socket_enable_crypto($this->socket->connection, 
                            true, STREAM_CRYPTO_METHOD_SSLv23_CLIENT);

А затем снова открыть сообщение с помощью

<?xml version='1.0' encoding='UTF-8'?>
<stream:stream to=.....

После этого вы получите «реальный» ответ о том, как вы можете аутентифицироваться (т. Е. PLAIN).

Все это реализовано в моей библиотеке , так что вы можете проверить это.

...