我正试图让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
我希望有人可以帮助我,谢谢!
答案 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