用letsencrypt证书进行了ejabbed

时间:2017-10-05 14:46:12

标签: centos7 ejabberd lets-encrypt

我正试图让Ejabberd在centos7上使用letsencrypt证书。 我不断收到有关未由已知CA签名的证书的错误。

我已经通过certbot创建了证书,并且我将privkey和fullchain文件加入到单个文件中。

所有c2s连接都正常,但s2s连接没有。

启动Ejabberd时,我会看到以下相关日志条目:

[warning] <0.606.0>@ejabberd_pkix:check_ca_dir:386 CA directory /etc/ssl/certs doesn't contain hashed certificate files; configuring 'ca_path' option might help
[warning] <0.606.0>@ejabberd_pkix:mk_cert_state:240 certificate from /opt/ejabberd/conf/xxxx.pem is invalid: certificate is signed by unknown CA

连接到例如draugr.de会生成以下条目:

[info] <0.793.0>@ejabberd_s2s_in:handle_auth_failure:206 (tls|<0.792.0>) Failed inbound s2s EXTERNAL authentication draugr.de -> XXXXX.net (::FFFF:89.163.212.45): unable to get local issuer certificate

我希望有人可以帮助我,谢谢!

3 个答案:

答案 0 :(得分:1)

截至2018年11月,
仅使用certbot安装letencrypt就足够了click here to see how。 Ejabberd使用提供的证书。 请注意,您可能需要注册多个子域才能使某些严格的jabber客户端正常工作。

conference.yourjabberdomain.com
pubsub.yourjabberdomain.com
upload.yourjabberdomain.com
yourjabberdomain.com

或从letsencrypt安装通配符证书

 sudo certbot certonly --server https://acme-v02.api.letsencrypt.org/directory --manual --preferred-challenges dns -d *.yourjabberdomain.com

我认为ejabberd配置文件ejabberd.yml中有一条规则允许发生这种情况

certfiles:
  - "/etc/letsencrypt/live/*/*.pem"

答案 1 :(得分:0)

我最终能够自己解决这个问题但是我在接下来的几天里不在办公室,并且无法为您提供解决问题的确切配置。

但是,如果我没记错的话,我在这里下载了CA捆绑包https://curl.haxx.se/docs/caextract.html,并且ejabberd有一些配置参数可以使用此CA捆绑包而不是默认捆绑包。

希望它对你有所帮助。

答案 2 :(得分:0)

如果它适用于c2s而不适用于s2s,那么看起来配置文件中的s2s块不会使用certfile更新。我相信你对c2s有类似的东西:

port: 5222
    ip: "::"
    module: ejabberd_c2s
    starttls: true
    certfile: 'CERTFILE'
    protocol_options: 'TLSOPTS'

同样,你的s2s块应该有:

port: 5269
    ip: "::"
    module: ejabberd_s2s_in
    starttls: true
    certfile: 'CERTFILE'
    protocol_options: 'TLSOPTS'
    max_stanza_size: 131072
    shaper: s2s_shaper