XMPP与TLS实现

问题描述 投票:0回答:1

如何通过TLS连接到XMPP服务器?我已经阅读了关于它的书籍和RFC文档,并且高概述上的说明很清楚,但我遗漏了细节。

我正在构建我的own XMPP library,一旦我在端口5222上打开客户端的套接字,我就发送初始XML来开始对话,然后是:

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

服务器响应:

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

在此之后,我不清楚我应该怎么做,因为据说TLS魔法应该在这里发生,让服务器将证书发送给客户端。这是怎么做的,我怎么知道收到了?

之后,文档说流应该终止,另一个开始...这是否意味着我需要断开套接字或只是通过发送</stream:stream>来关闭流?

php xml ssl xmpp starttls
1个回答
0
投票

我找到了问题的解决方案。我的错误是,在我得到<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)的“真实”回复。

这一切都在my library内实施,所以你可以检查出来。

© www.soinside.com 2019 - 2024. All rights reserved.