我提前为这个问题的长篇大论而道歉,但我觉得我需要提供一些额外的信息才能恰当地证明我目前的困境。
背景
好的,在很多方面,这个问题是对previous question I asked regarding TLS/SSL encryption for XMPP communication and which libraries were the best.的跟进。起初我只是使用了使用TLS / SSL的.net库,但后来扩展到包含Java库,这也是一个合适的问题。替代方案并尝试了Smack API的简单实现。经过对TLS / SSL加密的详尽(并且在很大程度上被误导)的研究后,我意识到当Openfire被正确配置为阻止非安全连接时,大多数XMPP客户端在连接到Openfire时只会自动协商TLS加密通信,只要我控制服务器端的用户名单(即禁用用户从任何客户端创建新帐户的能力),我或多或少可以通过Openfire创建安全的端到端XMPP协作。
新问题
一旦我解决了之前的问题,我尝试通过Openfire的HTTP绑定功能和端口使用此方法进行HTTP绑定的安全通信。这是因为我们的实现将要求用户从其他网络连接到我们的Openfire服务器。此外,也许显然,我们无法控制如何配置这些用户防火墙以允许通过端口5222进行传出套接字连接,并且由于我们正在实施的系统的性质,我们的任何客户都不太可能愿意/允许打开防火墙以建立到我们的XMPP服务器的套接字连接。
问题在于,Openfire的Http-Bind似乎不支持自动TLS,而只支持(如Openfire所说)“旧SSL”加密方法。 This and other Openfire Socket vs Http are discussed in another question here, although not yet at great length
问题(最后)
首先,任何人都可以确认 Http-Bind实际上是通过Openfire绑定的 不支持自动TLS?
其次,Smack API是否支持 HTTP绑定? Ignite realtime上有一个existing ticket 似乎说明它的网站 但不支持票证 创建于2007年及其最后一个 2011年6月的评论询问是否 已经对此进行了任何更新 功能已经消失了 无人接听。
第三,好像我的最后一次 求助于实现安全 使用Openfire和 Http-bind将使用'Old 然而,这不是SSL的方法 似乎是一个很好的长期解决方案。 此外,Openfire论坛和其他 各种谣言工厂都表示 SSL功能将是 在未来的Openfire中被弃用 发布(任何人都可以相信 这个谣言)。所有这一切,都是 SSL是我唯一真正的替代品 使用Http-bind进行安全连接。
答案 0 :(得分:1)
默认情况下,Openfire会打开两个端口,用于基于HTTP绑定(BOSH)的连接。一个是纯文本端口(7080),一个是TLS / SSL加密端口(7483)。这很像用于常规套接字连接的两个端口(5222,5223)。
通过非HTTP常规套接字端口(5222)连接的客户端可以将最初的纯文本通道提升为加密通道(使用STARTTLS)。当引入STARTTLS时(回到......好吧,我当时没有孩子),预先存在的TLS / SSL加密端口(5223)被称为“旧”加密方式。也许有点过于热心,有人建议放弃“旧”技术,转而支持“新”技术。
STARTTLS尚未明确添加到HTTP绑定(BOSH)实现的“纯文本”端口(7080)。这是设计的。与端口5222上的“普通套接字”连接不同,BOSH使用传输协议:HTTP。 BOSH的信道加密应该在HTTP(传输)层(端口7483)完成,而不是XMPP(应用程序)层(在非基于HTTP的世界中转换回'旧的'做事方式)。顺便说一下,这不是特定于Openfire的:它由the BOSH protocol指定。
至于“旧的”基于SSL的端口的弃用:普遍的共识(在Openfire开发者之间)是删除“旧的”SSL端口没有意义:尽管这种技术有点过时,但它的安全性并不低于更现代(STARTTLS)的技术。最重要的是,放弃“旧”SSL端口的讨论面向非基于HTTP的连接(客户端,服务器到服务器,外部组件等的套接字连接)。最后,关于是否更改BOSH的默认端口编号(Openfire使用7080/7483,早于标准BOSH端口编号的定义)的类似但不同的讨论,讨论有些失真。
按照设计,BOSH实现旨在利用HTTP提供的加密,其加密端口将继续存在。
关于Smack支持-BOSH问题:Smack支持:https://www.igniterealtime.org/builds/smack/docs/latest/javadoc/org/jivesoftware/smack/bosh/XMPPBOSHConnection.html