我在 Ubuntu 上使用 ejabberd。我的配置如下:
{5269, ejabberd_s2s_in, [
{shaper, s2s_shaper},
{max_stanza_size, 131072},
starttls_required
]},
{5222, ejabberd_c2s, [
{access, c2s},
{shaper, c2s_shaper},
{max_stanza_size, 65536},
starttls_required,
starttls, {certfile, "./xmpp.pem"}
]},
{s2s_use_starttls, true}.
{s2s_certfile, "./xmpp.pem"}.
xmpp.net 仍然显示 s2s TLS 不是“必需的”,而只是“允许的”。此外,还为 c2s 和 s2s 以及一些不安全的密码(如 RC4)启用了 SSLv3。
如何禁用 SSLv3 和 RC4,并在所有连接上强制 starttls?
谢谢!
答案1
需要 StartTLS:
{s2s_use_starttls, require}.
而不是{s2s_use_starttls, true}.
(请记住,这将使您无法连接到 gmail.com 及其托管的所有域)。
弱密码:
看http://www.process-one.net/docs/ejabberd/guide_en.html#sec27。我认为这意味着做一些类似于添加{ciphers, "..."}
选项的事情ejabberd_c2s
。检查以openssl ciphers -V '...'
查看密码字符串将启用哪些密码。
据我所知,如果不重新编译 ejabberd,就无法禁用 SSLv3。请参阅一些讨论这里。
答案2
这是一个老问题,但我想为搜索和找到这个问题的任何人添加一个更新的答案,但使用更现代版本的 ejabberd(撰写本文时为 14.12)。以下选项(采用新的 YAML 配置格式)应使 starttls 成为必需,将密码列表更改为合适的内容,并禁用对 s2s 连接的旧版 SSL 支持:
s2s_use_starttls: required
s2s_ciphers: "HIGH:!3DES:!aNULL:!SSLv2:@STRENGTH"
s2s_protocol_options:
- "no_sslv2"
- "no_sslv3"
对于 c2s 连接,你可以做类似的事情,只不过它遵循 c2s listen 指令:
-
port: 5222
module: ejabberd_c2s
protocol_options:
- "no_sslv2"
- "no_sslv3"
ciphers: ...