首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用TLS实现的XMPP

问使用TLS实现的XMPP
EN

Stack Overflow用户
提问于 2019-04-17 05:11:54
回答 1查看 527关注 0票数 0

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

我正在构造我的own XMPP library,一旦我在端口5222上打开到客户机的套接字,我将发送初始XML以启动对话,随后是:

代码语言:javascript
复制
<starttls xmlns='urn:ietf:params:xml:ns:xmpp-tls'/>

服务器响应为:

代码语言:javascript
复制
<proceed xmlns='urn:ietf:params:xml:ns:xmpp-tls'/>

在这之后,我就不清楚我应该做什么了,因为假设TLS魔术应该在这里发生,让服务器将证书发送给客户端。这是怎么做的,我怎么知道它是被接收到的?

在那之后,文档说流应该终止,还有一个started...does,这意味着我需要断开套接字的连接,或者只是通过发送</stream:stream>来关闭流

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-23 23:04:24

我已经找到了解决这个问题的办法。我的错误是,在获得<proceed>之后,我关闭了套接字,以便将其切换到端口443,更改协议,以及其他类似的事情。

解决方案不是关闭连接,而是通过使用以下命令在现有连接上启用加密:

代码语言:javascript
复制
stream_socket_enable_crypto($this->socket->connection, 
                            true, STREAM_CRYPTO_METHOD_SSLv23_CLIENT);

然后再一次打开通信

代码语言:javascript
复制
<?xml version='1.0' encoding='UTF-8'?>
<stream:stream to=.....

在这之后,你将得到关于如何认证的“真实”响应(即普通的)。

它都是在my library中实现的,因此您可以查看它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55716672

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档