CA 证书显示为未知证书

CA 证书显示为未知证书

我正在尝试配置一个证书以供我的 ejabberd 服务器使用。这不是自签名证书,而是 Comodo 的 PossitiveSSL 颁发的有效期为 1 年的证书。证书尚未过期。

我有 PEM 格式的私钥、.crt 格式的证书和 .ca-bundle 格式的链

在 /opt/ejabberd/conf/ejabberd.yml 中有一行内容:

certfiles:
   - /opt/ejabberd/conf/server.example.com.crt
   - /opt/ejabberd/conf/server.example.com.ca-bundle
   - /opt/ejabberd/conf/privkey.pem

对于 privkey.pem,我不得不删除密码,因为 ejabberd 服务无法启动。它无法读取私钥。

我的问题是:我是否必须有一个 PEM 文件来存储 privkey+cert+chain?

我尝试了这两种方法,对于需要在连接时执行 TLS 的 Gajim 客户端来说,效果是一样的。在这种情况下,在配置中保留三行,每行指向正确的容器会更简单。

无论如何,我有一个 gajim windows XMPP 客户端,它可以很好地连接到服务器所需的 TLS,并且没有错误,并且它正在使用 TLS

当我尝试通过 Android 设备连接另一个 JID 时,收到以下信息:

接受未知证书?服务器证书未由已知证书颁发机构签名。

为什么我会得到这个?虽然在 Android 中我可以选择“始终接受”,但我无论如何都不想这样做,因为我使用的是来自 Authority 的签名证书,但 Apple 设备甚至不提供接受任何内容的选项,并且 TLS 连接中断。

我尝试了多种方法,但 Android 中仍然会弹出此窗口。

此条目是否:

certfiles:
   - /opt/ejabberd/conf/server.example.com.crt
   - /opt/ejabberd/conf/server.example.com.ca-bundle
   - /opt/ejabberd/conf/privkey.pem

全局?意思是如果我在这里指定证书文件,就不需要为每个模块都指定?比如对于 c2S 模块,我是否必须指定证书文件的路径?

listen:
  -
    port: 5222
    module: ejabberd_c2s
    ##
    ## If TLS is compiled in and you installed a SSL
    ## certificate, specify the full path to the
    ## file and uncomment these lines:
    ##
    ## certfile: "/path/to/ssl.pem"
    ## starttls: true

提前致谢。

答案1

意思是如果我在这里指定 certfiles,我就不必为每个模块都指定?比如对于 c2S 模块,我是否必须指定 cert 文件的路径?

查看文档,它清楚地表明选项 certfiles 是全局的,因此 ejabberd 在其任何模块中获取证书时都会使用它:

全局选项还有一些可以在 ejabberd 配置文件中指定(在 listen 之外)的附加全局选项:

acme:自动化 SSL 证书管理。请参阅 ACME 部分。

certfiles:路径列表:该选项接受包含 PEM 证书或 PEM 私钥的文件路径列表(可选带通配符)。启动时,ejabberd 会对证书进行排序,查找匹配的私钥并重建完整证书链。在侦听器 ejabberd_c2s、ejabberd_s2s 或 ejabberd_http 中启用 starttls 或 tls 等选项时使用此选项。

https://docs.ejabberd.im/admin/configuration/#global-options

此外,还有一些示例配置使用 certfiles 全局选项来定义稍后由特定模块使用的证书:

https://docs.ejabberd.im/admin/configuration/#mod-register-web

https://docs.ejabberd.im/admin/configuration/#mod-http-upload

答案2

感谢您提供的信息和链接。我查看了它们,一切都设置得当。Windows 10 上的 gajim 客户端再次没有出现任何问题,其 JID 安全地连接到服务器。Android 和 Apple 设备会抱怨“服务器证书未由已知证书颁发机构签名”所有客户端都在同一个内部 LAN 上。

不知道还能尝试什么,

相关内容