ejabberd starttls_required in c2s/s2s 并禁用 SSLv3 + 不安全密码

pyt*_*mus 5 ssl ejabberd xmpp starttls

我在 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"}.
Run Code Online (Sandbox Code Playgroud)

xmpp.net 仍然表明 s2s TLS 不是“必需的”,而只是“允许的”。此外,为 c2s 和 s2s 以及一些不安全的密码(如 RC4)启用了 SSLv3。

如何禁用 SSLv3 和 RC4,并在所有连接上强制启动?

谢谢!

Sam*_*ted 7

这是一个老问题,但我想为任何搜索和找到这个问题的人添加一个更新的答案,但使用更现代的 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" 
Run Code Online (Sandbox Code Playgroud)

对于 c2s 连接,你可以做类似的事情,除了它在 c2s 监听指令下:

-
  port: 5222
  module: ejabberd_c2s
  protocol_options:                                                            
    - "no_sslv2"                                                               
    - "no_sslv3" 
  ciphers: ...                                                              
Run Code Online (Sandbox Code Playgroud)


小智 3

需要 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。请参阅此处的一些讨论。