Further hardening steps for Apache TLS configurations

By | 21st December 2018

Following on from my previous post, there are some further updates you can make to your Apache configuration to improve the ciphers used between server and client.

Require strong ciphers

Configuring SSL to only accept the strongest ciphers is best practice, but the trade off as with many of these options is compatibility. If you are using older browsers, this may not be beneficial.

The configuration directive is “SSLCipherSuite”, and should be configured as follows (Source SSL Labs A+ guidance):

SSLCipherSuite AES256+EECDH:AES256+EDH:AES128+EECDH:AES128+EDH

The argument is a “cipher spec string” which specifies the cipher suite that should be used during the handshake phase.

Honouring cipher order

The cipher order determines which cipher is automatically negotiated between the server and client. This is a frequent issue in many configurations, with servers out-of-the-box allowing the negotiation of less-preferable ciphers, due to no enforcement of cipher order. To fully control how ciphers are negotiated, this should be enforced on the server side.

The directive we should update to enforce this practice is “SSLHonorCipherOrder”.

Using the same configuration files I discussed in my previous post, configure this setting to “on”:

SSLHonorCipherOrder on

Disable SSL compression

Enabling compression of ciphered traffic is helpful in trading reduced network bandwidth for higher CPU load either end. If you have sufficient capacity in both clients and server, this option is suitable. However, if using TLS then it is recommended NOT to use SSL compression due to the CRIME vulnerability (Source: Linux Journal).

Update the configuration as follows:

SSLCompression off