WordPress HTTPS, SSL y TLS: una guía para administradores de sitios web

Publicado: 2021-02-01

Cuando visita un sitio web, su navegador (también conocido como cliente ) envía una solicitud HTTP a un servidor web. Una vez que el servidor web envía una respuesta HTTP, el navegador puede mostrar la página en su pantalla. Sin embargo, el tráfico HTTP tiene un problema; es un protocolo de texto plano. Esto lo hace susceptible a espionaje e intromisión.

Si un atacante está en la misma red que usted, puede interceptar y leer su tráfico HTTP. También pueden modificar tanto sus solicitudes al servidor como las respuestas del servidor a usted. Esto se conoce como ataque Man-in-the-Middle (MitM). Esto puede suceder fácilmente en WiFi públicas, como las de los vestíbulos de los hoteles y los espacios públicos.

Es por eso que un sitio web debe estar en HTTPS, para que el tráfico no pueda ser interceptado. Este artículo explica qué son HTTPS, SSL y TLS. También explica cómo puede configurar su sitio web de WordPress para que funcione en HTTPS.

Tabla de contenido

  • ¿Qué es SSL y TLS?
  • ¿Qué es HTTPS?
    • ¿Cómo funciona HTTPS?
      • El apretón de manos TLS
      • Las claves pública y privada (el par de claves)
  • ¿Realmente necesito HTTPS en mi sitio web de WordPress?
    • Obtener un certificado HTTPS TLS (también conocido como certificado SSL)
    • HTTPS en alojamiento de WordPress compartido y administrado
  • Configuración de WordPress HTTPS
    • Configuración del servidor web
    • Configurando la URL de WordPress a HTTPS
    • Aplicación de TLS en el panel de control de WordPress (consejos adicionales)
  • Adición de seguridad de transporte estricta HTTP (HSTS)
    • Configuración de HSTS en el servidor web
    • Cifrados TLS
    • Mi WordPress se ejecuta en HTTPS, ¿es seguro?

¿Qué es SSL y TLS?

Una vez que Internet comenzó a crecer, se hizo evidente que necesitábamos un mecanismo para transferir información de forma segura entre un cliente y un servidor sin que nadie pudiera espiar o modificar el tráfico: ingrese SSL o Secure Socket Layer. SSL es un protocolo de seguridad de Internet, desarrollado por primera vez por Netscape en 1995 para resolver este problema.

Más específicamente, SSL se propuso lograr lo siguiente:

  • Cifrado : para cifrar el tráfico de modo que no pueda ser interceptado por un tercero no autorizado mediante espionaje,
  • Autenticación : para asegurarse de que el servidor con el que está hablando el cliente es realmente el servidor que dice ser,
  • Integridad : para garantizar que los datos enviados entre el cliente y el servidor no sean modificados por otra persona en el camino.

Sin embargo, con el tiempo, los investigadores de seguridad identificaron una serie de problemas de seguridad en SSL. Por lo tanto, SSL fue reemplazado por TLS (Protocolo de seguridad de la capa de transporte). Si bien las diferencias internas entre SSL y TLS son drásticas, el propósito de TLS sigue siendo prácticamente el mismo.

NOTA: es posible que vea con frecuencia que se usa SSL para referirse a TLS. SSL es un protocolo heredado y ya no es seguro de usar. Sin embargo, debido a su popularidad, muchos todavía usan SSL como acrónimo, pero significan TLS .

¿Qué es HTTPS?

HTTPS, o Hypertext Transfer Protocol Secure es una versión segura del protocolo HTTP. HTTPS se basa en Transport Layer Security (TLS), un protocolo mejorado y más seguro que el utilizado anteriormente, Secure Socket Layer (SSL). TLS proporciona cifrado, autenticación e integridad a las solicitudes y respuestas HTTPS.

Puede pensar en HTTPS como solicitudes y respuestas HTTP (esa es la versión de texto sin formato del protocolo) que pasan a través de un túnel TLS. El término técnico para esto es encapsulación . Es pertinente tener en cuenta que TLS puede usarse para encapsular otros protocolos, no solo HTTP.

Puede detectar sitios web que usan HTTPS al mirar el comienzo de la URL (comienza con HTTPS) en la barra de navegación del navegador o al lado del candado verde. Si está navegando por un sitio web en HTTP, los navegadores lo marcan como No seguro .

Sitios web HTTP marcados como no seguros

¿Cómo funciona HTTPS?

Cuando solicita una página web mediante HTTPS, su navegador y el servidor web inician un proceso llamado protocolo de enlace TLS . El protocolo de enlace TLS es una forma en que el cliente y el servidor deciden si deben comunicarse y cómo. Durante el transcurso del protocolo de enlace TLS, el cliente y el servidor hacen lo siguiente:

  • decidir la versión del protocolo TLS a utilizar (TLS 1.0, 1.2, 1.3…),
  • acordar qué conjuntos de cifrado (un conjunto de algoritmos de cifrado utilizados para establecer comunicaciones seguras) usar,
  • autenticar la identidad del servidor,
  • generar claves de cifrado para usar después de que se complete el protocolo de enlace, para comunicarse de forma segura.

El apretón de manos TLS

Durante el protocolo de enlace TLS, el servidor envía al cliente su certificado para que el cliente verifique que puede autenticar el servidor. Un certificado es similar a un pasaporte: es emitido por una autoridad central de confianza llamada Autoridad de certificación (CA) que establece de forma independiente la identidad del sitio web que puede probarse en su navegador.

Las claves pública y privada (el par de claves)

El certificado TLS (a menudo denominado certificado SSL) que el servidor web envía al cliente contiene la clave pública . La clave pública es una de las dos claves especiales llamadas par de claves . Un par de llaves consta de dos llaves; la clave pública y la clave privada . Mientras que la clave pública se comparte con los clientes, la clave privada se mantiene en secreto en el servidor y nunca se divulga. El par de llaves están forjados juntos.

El par de claves pública y privada tienen una relación particularmente interesante: sin conocer la clave privada del servidor (esta es secreta y solo el servidor debe conocerla), un cliente puede cifrar datos utilizando la clave pública del servidor que el servidor puede descifrar utilizando su clave privada . .

Si esto suena confuso, piense en esto como si el "servidor" le enviara a su "navegador" una maleta abierta (clave pública) protegida con un candado: una vez que coloca algo en la maleta y cierra el candado, solo el "servidor" con el clave para el candado (clave privada) puede ver lo que hay dentro.

¿ Realmente necesito HTTPS en mi sitio web de WordPress?

Si. No importa qué tipo de tráfico esté sirviendo su sitio web (ya sea información de identificación personal (PII), datos del titular de la tarjeta o imágenes de gatos), no hay absolutamente ninguna razón por la que no deba estar sirviendo su sitio web a través de HTTPS.

En primer lugar, cuando ejecuta su sitio web en HTTP, los piratas informáticos pueden robar fácilmente sus contraseñas y credenciales de WordPress y piratear su sitio web. Pueden hacer todo esto utilizando herramientas disponibles gratuitamente.

Aparte de los beneficios de seguridad y una mejor experiencia de usuario, el nuevo protocolo HTTP/2, que ofrece varios beneficios de rendimiento, no se puede usar sin TLS en los navegadores web. Además, HTTPS también tiene beneficios de optimización de motores de búsqueda (SEO) y es parte del algoritmo de clasificación de búsqueda de Google.

Obtener un certificado HTTPS TLS (también conocido como certificado SSL)

Para configurar HTTPS, necesitará un certificado TLS si está configurando todo usted mismo. Si bien verá docenas de ofertas de certificados TLS pagados, puede obtener un certificado TLS gratuito de una autoridad de certificación sin fines de lucro llamada Let's Encrypt. No hay absolutamente nada diferente entre un certificado que obtiene de Let's Encrypt de forma gratuita y uno por el que paga.

HTTPS en alojamiento de WordPress compartido y administrado

Tenga en cuenta que para las soluciones de alojamiento administrado o compartido, su proveedor de alojamiento puede o no cobrar por agregar HTTPS; si este es el caso, antes de desembolsar dinero por un certificado, pregunte a su servicio de atención al cliente si puede usar un certificado Let's Encrypt con su servicio en su lugar. Los foros de la comunidad de Let's Encrypt también son un gran recurso que puede ayudarlo.

Configurar WordPress HTTPS (aplicar TLS en su sitio de WordPress)

Hay algunas formas de hacer cumplir TLS en su sitio web de WordPress según su configuración. En la mayoría de los casos, configuraría su servidor web para redirigir todo el tráfico HTTP a HTTPS (consulte el generador de configuración SSL de Mozilla.

También necesita configurar WordPress para escuchar en HTTPS. Puede hacerlo con complementos como Really Simple SSL o WP force SSL. En este ejemplo, veremos cómo hacer esto sin usar complementos adicionales.

Configuración del servidor web

Aviso

  • Tenga cuidado al copiar/pegar configuraciones del servidor web y asegúrese de saber exactamente lo que están haciendo consultando la documentación de su servidor web.
  • Puede encontrar muchos ejemplos en línea usando %{HTTP_HOST} (servidor HTTP Apache) o $http_host (Nginx); ambos pueden hacer que su sitio web sea susceptible a ataques de encabezado de host HTTP; en su lugar, escriba su nombre de host en su configuración como se ve debajo.

Si está utilizando Nginx, puede configurar lo siguiente:

server {
  listen 80;
  server_name example.com www.example.com;
  return 301 https://example.com$request_uri;
}

Alternativamente, si está utilizando el servidor Apache HTTP, puede configurar lo siguiente:

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %{HTTPS} off
  RewriteRule ^(.*)$ https://www.example.com%{REQUEST_URI} [L,R=301]
<IfModule>

Configurando la URL de WordPress a HTTPS

Una vez que habilite HTTPS en su servidor web, también deberá configurar WordPress. En teoría, puede hacerlo manualmente: simplemente cambie la dirección de WordPress y la dirección del sitio en la configuración general de WordPress. También debe realizar una búsqueda y reemplazar en la base de datos para cambiar todos los enlaces de su sitio web de HTTP a HTTPS.

[CAPTURA DE PANTALLA]

Entonces, lo más probable es que sea mucho más fácil usar un complemento para cambiar su sitio web de WordPress a HTTPS. Puede usar un complemento popular como Really Simple SSL para ayudarlo en el proceso.

Aplicación de TLS en el panel de WordPress

TLS solo es útil si se está utilizando. Como tal, desea asegurarse de que su sitio de WordPress no solo sea compatible con TLS, sino que también lo aplique. Dado que siempre se debe acceder al panel de WordPress a través de HTTPS, WordPress incluye la opción de configuración especial FORCE_SSL_ADMIN, que se puede establecer en verdadero en wp-config.php.

define('FORCE_SSL_ADMIN', true);

Aviso

  • Dependiendo de la instalación y configuración de su sitio web (específicamente, si está utilizando un proxy inverso), esto puede causar que las solicitudes a su tablero de WordPress entren en un ciclo de redireccionamiento infinito. Para obtener más información sobre cómo solucionar esto, consulte la documentación de WordPress y siempre pruebe sus cambios en un entorno de prueba antes de implementarlos en producción.
  • Además, asegúrese de tener TLS configurado y funcionando correctamente antes de establecer FORCE_SSL_ADMIN en verdadero.

CONSEJO ADICIONAL 1: Adición de seguridad de transporte estricta HTTP (HSTS)

Si bien redirigir todo su tráfico a HTTPS es un gran movimiento, desafortunadamente, los atacantes aún pueden tener algunos trucos bajo la manga. Un ataque conocido como SSL strip permitiría a un atacante engañar al navegador para navegar por el sitio en HTTP en lugar del HTTPS seguro, derrotando efectivamente su arduo trabajo por completo.

Para obtener más detalles (muy técnicos) sobre los ataques de tira SSL, vea la charla de Moxie Marlinspike a continuación.

Como resultado, los navegadores ahora implementan HTTP Strict Transport Security o HSTS. HSTS no es más que un simple encabezado HTTP que le dice al navegador que nunca se debe acceder a este sitio web en particular a través de HTTP, derrotando cualquier ataque de tira SSL.

Configuración de HSTS en el servidor web

Aviso

  • No habilite HSTS hasta que tenga confianza con HTTPS; cualquier visitante que reciba este encabezado HTTP solo podrá ver su sitio a través de HTTPS.
  • Establezca siempre el atributo de edad máxima: opcionalmente, puede optar por establecer un valor bajo la primera vez que implemente HSTS (para limitar cualquier problema potencial) y aumentarlo cuando tenga más confianza al usar HSTS.

Si usa Nginx, puede configurar lo siguiente dentro del bloque del servidor que escucha en el puerto 443:

# HSTS (ngx_http_headers_module is required) (63072000 seconds)
add_header Strict-Transport-Security "max-age=63072000" always;

Alternativamente, si está utilizando Apache HTTP Server, puede configurar lo siguiente dentro de su VirtualHost escuchando en el puerto 443:

# HTTP Strict Transport Security (mod_headers is required) 
(63072000 seconds)
Header always set Strict-Transport-Security "max-age=63072000"

Sugerencia adicional 2: Configuración de cifrados TLS

Para garantizar que la transferencia de datos entre el navegador y el servidor sea segura, ambas partes acuerdan utilizar lo que se conoce como conjunto de cifrado, una combinación de algoritmos de autenticación, cifrado y código de autenticación de mensajes (MAC), para negociar la configuración de seguridad. , así como para transferir datos de forma segura.

Desafortunadamente, muchos cifrados heredados tienen vulnerabilidades de seguridad y ya no son particularmente seguros de usar. Si bien decidir qué cifrados usar es un asunto complicado, el Generador de configuración SSL de Mozilla hace que sea pan comido elegir un conjunto de cifrado TLS que se adapte a sus necesidades. Siempre que sea posible, intente usar los perfiles modernos o intermedios; sin embargo, según su caso de uso, especialmente si necesita admitir navegadores heredados o cumplir con los requisitos normativos y de cumplimiento, es posible que deba usar configuraciones de conjunto de cifrado ligeramente diferentes.

Si usa Nginx, puede configurar los siguientes cifrados TLS (basados ​​en el perfil intermedio del generador de configuración SSL de Mozilla):

 # intermediate configuration
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES25
6-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDH
E-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;

Alternativamente, si está utilizando Apache HTTP Server, configure los siguientes cifrados TLS (basados ​​en el perfil intermedio del Generador de configuración SSL de Mozilla):

# intermediate configuration
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
SSLHonorCipherOrder off
SSLSessionTickets off

También puede probar el puntaje de configuración TLS de su sitio web utilizando una herramienta gratuita llamada SSLabs para obtener aún más información técnica.

Mi WordPress se ejecuta en HTTPS, ¿es seguro?

Los íconos de candados verdes y las palabras "seguro" junto a la barra de direcciones de su navegador pueden haberlo hecho creer que HTTPS es una varita mágica que resuelve todos los problemas de seguridad del sitio web. Desafortunadamente, no es así. El candado verde en la barra del navegador

HTTPS es solo una pequeña parte de la seguridad de WordPress: permite a los visitantes navegar por su sitio web a través de una conexión segura . Sin embargo, no protege su sitio web como un firewall de WordPress, ni lo hace más seguro. Tampoco significa que sea más seguro que un sitio web que se ejecuta en HTTP. Como cualquier otra defensa de seguridad, HTTPS ayuda a resolver parte del problema.

En otras palabras, si bien debe implementar y hacer cumplir HTTPS, no significa que pueda descansar tranquilo y no volver a preocuparse por la seguridad. Todavía deberías:

  • Agregar autenticación de dos factores
  • Instale un complemento de monitoreo de integridad de archivos
  • Aplicar fuertes políticas de contraseñas de WordPress
  • Mantenga un registro de actividad de WordPress como un registro de todos los cambios que ocurren en su sitio web
  • Utilice un buen cortafuegos.