miércoles, 23 de octubre de 2019

Deshabilitar TLS 1.0 y TLS 1.1 en Apache



Cómo deshabilitar TLS 1.0 y TLS 1.1 en un servidor web Apache.

Microsoft, Google y Mozilla han declarado que dejarán de ofrecer soporte para TLS 1.0 y TLS 1.1 en marzo de 2020 en sus navegadores web (Edge, Chrome y Firefox, respectivamente).

Cuando accedemos a una web por HTTPS, cliente y servidor negocian la encriptación con un protocolo que ambos soporten (TLS 1.0, TLS 1.2, TLS 1.3, etc.). A partir de marzo de 2020, TLS 1.1 ya no será aceptado como protocolo válido por los navegadores web de las compañías mencionadas.

Aprovechando que los navegadores web actuales ya no podrán usar TLS 1.1 o inferior, podemos aprovechar para deshabilitar estos protocolos de encriptación HTTPS obsoletos e inseguros en nuestros servidores web. Por un lado ganaremos en seguridad; por otro lado perderemos en compatibilidad con ordenadores que usen navegadores antiguos (NOTA: nadie debería usar navegadores antiguos).

Apache, en su rama actual 2.4.x, soporta TLS 1.0 y TLS 1.1 por defecto.

Para deshabilitar estos protocolos, debemos editar el archivo ssl-global.conf:

HOST# vi /etc/apache2/ssl-global.conf

En este archivo, encontraremos la siguiente sección:

# SSL protocols # Supporting TLS only is adequate nowadays SSLProtocol all -SSLv2 -SSLv3

Por defecto, Apache ya no acepta encriptación SSL, solo TLS.


Opciones



Para dejar de aceptar TLS 1.0 y TLS 1.1 en Apache, deberemos cambiar la directiva SSLProtocol all. Al modificarla, podemos usar uno de estos dos métodos, segun si queremos aceptar o rechazar cipher suites en nuestro servidor web.

Método 1

Con el método 1, indicamos al servidor web qué protocolos no acepta. Es decir, el servidor aceptará todos aquellos cipher suites que no estén en la lista.

Para quitar protocolos de encriptación, debemos usar el signo "-" precediendo el nombre del protocolo:

SSLProtocol all -SSLv2 -SSLv3 -TLSv1.0 -TLSv1.1


Método 2

Con el método 2 indicamos solo aquellos cipher suites que sí acepta el servidor.

Para permitir solo ciertos protocolos, los indicamos explícitamente:

SSLProtocol all TLSv1.2 TLSv1.3


Conclusión



Personalmente, prefiero el método 1, ya que de este modo, podemos ir especificando los protocolos que van quedando obsoletos a medida que vayan quedando obsoletos. Bajo mi punto de vista, es más fácil estar al día sobre qué protocolos se "deprecan" que sobre qué protocolos se lanzan.
3

3 comentarios:

  1. Esta línea falla en algunas versiones de Apache:
    SSLProtocol all -SSLv2 -SSLv3 -TLSv1.0 -TLSv1.1

    Debería ser:
    SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1

    Un saludo

    ResponderEliminar
  2. Muy buen aporte. Lo probaré

    Saludos

    ResponderEliminar