如何使用 Smack XMPP 库创建 SSL 连接?
我正在构建一个充当 XMPP 客户端的小程序,并且我正在使用 Smack 图书馆。 现在,我连接的服务器需要 SSL(在 Pidgin 中我必须选中“强制旧(端口 5223)SSL”)。 我无法让 Smack 连接到该服务器。 是否可以?
I'm building a small program that acts as an XMPP client and I am using the Smack library. Now, the server I am connecting to requires SSL (in Pidgin I have to check "Force old (port 5223) SSL"). I'm having trouble getting Smack to connect to this server. Is it possible?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您可以通过以下方式实现此目的:
将 CA 证书存储在密钥库中
要将证书存储在密钥库中,请按照以下步骤操作。
第 1 步:下载 bouncycastle JAR 文件。 可以从这里下载:Bouncy Castle JAVA Releases
第2步:使用以下命令将证书存储在密钥库中
第 3 步:验证密钥库文件
这将列出密钥库中包含的证书。
我们有一个可以在代码中使用的密钥库。
使用密钥库
生成此密钥库后,将其保存在应用程序的原始文件夹中。 使用下面的代码来获取与 openfire 服务器的证书握手。
要使用 XMPP 创建与 openfire 的连接,您可能需要获取配置。 同样,请使用以下方法:
全做完了..!! 只需连接.. 现在您的连接已安全。
全部遵循我的博客 smackssl.blogspot 中的相同内容.in
You can achieve this by the following:
Storing the CA Certificate in Keystore
To store the certificate in a Keystore follow these steps.
Step 1: Download the bouncycastle JAR file. It can be downloaded from the here: Bouncy Castle JAVA Releases
Step 2: Use the following command to store the certificate in keystore
Step 3: Verify the keystore file
This shall list us the certificate included in the keystore.
We have a keystore which we can use in our code.
Using the keystore
After generating this keystore, save it in the raw folder of your application. The use the below code to get the certificate handshake with the openfire server.
To create a connection with openfire using XMPP, you may need to get the config. For the same, use the below method:
All done..!! Just connect.. Now your connection is secured.
All follow the same in my blog at smackssl.blogspot.in
是的,这很容易实现。 看一下 ConnectionConfiguration 类,特别是 setSecurityMode 方法,它接受 ConnectionConfiguration.SecurityMode 枚举作为参数。 将其设置为“必需”会强制 Smack 使用 TLS。
来自 Javadoc:
Yes, it's quite easy to achieve. Take a look at the ConnectionConfiguration class, and in particular the setSecurityMode method which accepts a ConnectionConfiguration.SecurityMode enum as a parameter. Setting this to "required" forces Smack to use TLS.
from the Javadoc:
看看这个线程。
http://www.igniterealtime.org/community/thread/37678
本质上,您需要将这两行添加到您的代码中:
其中 connConfig 是您的 ConnectionConfiguration 对象。 从 Spark 源代码存储库获取 DummySSLSocketFactory。 它所做的只是接受几乎任何证书。 这似乎对我有用。 祝你好运!
Take a look at this thread.
http://www.igniterealtime.org/community/thread/37678
Essentially, you need to add these two lines to your code:
where connConfig is your ConnectionConfiguration object. Get the DummySSLSocketFactory from the Spark source code repository. All it does is accept virtually any certificate. This seemed to work for me. Good luck!