Server Fault is a question and answer site for system and network administrators. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I'm using ejabberd on Ubuntu. My configuration looks like this:

  {5269, ejabberd_s2s_in, [
                       {shaper, s2s_shaper},
                       {max_stanza_size, 131072},
  {5222, ejabberd_c2s, [
                    {access, c2s},
                    {shaper, c2s_shaper},
                    {max_stanza_size, 65536},
                    starttls, {certfile, "./xmpp.pem"}
  {s2s_use_starttls, true}.
  {s2s_certfile, "./xmpp.pem"}.

Still is showing that s2s TLS is not "required" but only "allowed". In addition SSLv3 is enabled for c2s and s2s and some insecure ciphers like RC4.

How can I disable SSLv3 and RC4, and force starttls on all connections?


share|improve this question
up vote 3 down vote accepted

Requiring StartTLS:

{s2s_use_starttls, require}. instead of {s2s_use_starttls, true}. (keep in mind this will currently make you unable to connect to and all domains they host).

Weak ciphers:

See I think this means doing something like adding {ciphers, "..."} to the ejabberd_c2s options. Check with openssl ciphers -V '...' to see what ciphers a cipher string will enable.

As far as I can tell, it's not possible to disable SSLv3 without recompiling ejabberd yourself. See some discussion here.

share|improve this answer

This is an old question, but I wanted to add an updated answer for anyone searching and finding this, but using a more modern version of ejabberd (14.12 at the time of this writing). The following options (in the new YAML configuration format) should make starttls required, change the ciphers list to something decent, and disable legacy SSL support for s2s connections:

s2s_use_starttls: required
s2s_ciphers: "HIGH:!3DES:!aNULL:!SSLv2:@STRENGTH"
  - "no_sslv2"                                                                   
  - "no_sslv3" 

for c2s connections you can do something similar, except that it goes under the c2s listen directive:

  port: 5222
  module: ejabberd_c2s
    - "no_sslv2"                                                               
    - "no_sslv3" 
  ciphers: ...                                                              
share|improve this answer
Though not explicitly asked by the question, it's also a good idea to set the dhfile option to your own DH parameters. – xnyhps Oct 24 '15 at 19:38

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.