用于 STARTTLS 协商的 ejabberd 中的 TLS 证书安装

Kam*_*esh 5 ssl xmpp ejabberd starttls

我读到 ejabberd 建议使用 STARTTLS 协商来实现通信实体之间的安全连接。当我安装 ejabberd 时,默认情况下它带有 TLS 证书。

那么,为什么我需要购买证书才能安装呢?由于我们有默认证书,因此从证书颁发机构购买新证书的目的是什么?

当我在机器上部署 ejabberd 时,默认证书将如何用于我的域?客户端将如何验证默认证书?

Mic*_*ond 2

您可以使用带有 SSL / STARTTLS 的 ejabberd 以及提供的 TLS 证书。但是,该证书只是自签名证书。代表着:

  1. 您仍然可以加密客户端和服务器之间的流量。
  2. 您的客户端将无法检查服务器是否是它所冒充的域。为了能够知道证书是可信的,客户端需要以某种方式引用信任机构。

在第二种情况下,这意味着如果中间网络设备(即 Wifi 接入点)尝试冒充您的服务器,它可以向用户提供任何自签名证书,冒充您的域。

因此,您绝对可以使用自签名证书来加密流量,但是为了保护您的用户免受中间人类型的攻击,您需要找到一种方法让客户端现在可以信任该证书。

这可以通过从受信任的机构购买证书(将证明您的证书域)或通过让客户端支持明确定义的证书列表来完成。这称为证书固定,但是它需要将可接受的证书列表构建到您的客户端中,这可能是不可能的。

对于您的情况来说可能没问题,因此购买证书不是强制性的。但是,不要使用默认的 ejabberd 自签名证书,即使您计划使用自签名证书。ejabberd 提供的证书与您自己的域不匹配。您至少应该生成与您的实际 XMPP 域匹配的自己的自签名证书:如何使用 openssl 创建自签名证书?