Disabling SSLv3

Updated on November 21, 2023
Disabling SSLv3 header image

POODLE (Padding Oracle On Downgraded Legacy Encryption) is a vulnerability that was found on October 14th, 2014, which allows an attacker to read any encrypted information using the SSLv3 protocol by performing a man-in-the-middle attack. Although many programs use SSLv3 as a fallback, it has come to the point where it should be disabled - as many clients can be forced into using SSLv3. Forcing a client into SSLv3 increases the chance of an attack taking place. This article will show you how to disable SSLv3 in select software applications that are commonly used today.

Disabling SSLv3 on Nginx

Head to the configuration file where your server information is stored. For example, /etc/nginx/sites-enabled/ssl.example.com.conf (replacing the path accordingly to your configuration). Within the file, look for ssl_protocols. Make sure this line exists, and matches the following:

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

This will enforce the use of TLS, thus disabling SSLv3 (and any older or obsolete protocols). Now restart your Nginx server by running one of the following commands.

CentOS 7:

systemctl restart nginx 

Ubuntu/Debian:

service nginx restart

Disabling SSLv3 on Apache

To disable SSLv3, head to your module configuration directory for Apache. On Ubuntu/Debian it may be /etc/apache2/mod-available. Whereas on CentOS, it may be located in /etc/httpd/conf.d. Look for the ssl.conf file. Open ssl.conf and find the SSLProtocol directive. Make sure this line exists, and matches the following:

SSLProtocol all -SSLv3 -SSLv2

Once finished, save, then restart your server by running one of the following commands.

For Ubuntu/Debian run:

CentOS 7:

systemctl restart httpd

Ubuntu/Debian:

service apache2 restart

Disabling SSLv3 on Postfix

Head to your postfix directory. It is typically /etc/postfix/. Open up the main.cf file and look for smtpd_tls_mandatory_protocols. Make sure this line exists, and matches the following:

smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3, TLSv1, TLSv1.1, TLSv1.2

This will force TLSv1.1 and TLSv1.2 to be enabled and used on your Postfix server. Once done, save and restart.

CentOS 7:

 systemctl restart postfix

Ubuntu/Debian:

service postfix restart

Disabling SSLv3 on Dovecot

Open the file located at /etc/dovecot/conf.d/10-ssl.conf. Then, find the line that contains ssl_protocols and make sure it matches the following:

ssl_protocols = !SSLv2 !SSLv3 TLSv1.1 TLSv1.2

Once done, save and restart Dovecot.

CentOS 7:

systemctl restart dovecot

Ubuntu/Debian:

service dovecot restart

Testing that SSLv3 is Disabled

To verify that SSLv3 is disabled on your web server, run the following command (replace domain and IP accordingly):

openssl s_client -servername example.com -connect 0.0.0.0:443 -ssl3

You will see output similar to the following:

CONNECTED(00000003)
140060449216160:error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure:s3_pkt.c:1260:SSL alert number 40
140060449216160:error:1409E0E5:SSL routines:SSL3_WRITE_BYTES:ssl handshake failure:s3_pkt.c:596:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 7 bytes and written 0 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : SSLv3
    Cipher    : 0000
    Session-ID: 
    Session-ID-ctx: 
    Master-Key: 
    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    Start Time: 1414181774
    Timeout   : 7200 (sec)
    Verify return code: 0 (ok)

If you want to confirm that your server is using TLS, run the same command but without -ssl3:

 openssl s_client -servername example.com -connect 0.0.0.0:443

You should see similar information displayed. Locate the Protocol line and confirm that it is using TLSv1.X (with X being 1 or 2 depending on your configuration). If you see this, then you have successfully disabled SSLv3 on your web server.