HTTPS gratis con Cloudflare o los certificados SSL de Let’s Encrypt

Desde que Google anunció que el HTTPS sería una señal positiva para el ranking muchos webmasters han migrado sus sitios para ganar esos puntos extra en el posicionamiento, incluso cuando un sitio se puede cargar con HTTP y HTTPS al mismo tiempo, Google tiende a indexar esta última versión por defecto si no hay nada que lo impida.

Pero más allá del ranking, utilizar HTTPS le brinda mayor seguridad a los usuarios que acceden a un sitio ya que al estar su tráfico cifrado es más complicado de interceptar por parte de un atacante, además brinda cierto grado de confianza el hecho de ver el candado verde en la barra de los navegadores.

A continuación comentaré dos formas de tener HTTPS sin necesidad de pagar por costosos certificados. La primera es utilizando Cloudflare y la segunda los nuevos certificados SSL gratuitos de Let’s Encrypt que se encuentran apoyados por diversas empresas como Mozilla, Akamai, Cisco, Facebook, Google, entre otras.

La opción que recomiendo es la segunda, ya que al utilizar Cloudflare Free se tienen algunas limitaciones en el certificado que no es 100% compatible con Windows XP. Con Let’s Encrypt sucede algo parecido con XP, pero se puede solucionar.

Leer bien todo para entenderlo y cualquier duda comentar.

HTTPS gratis con CloudFlare y sin tener certificado SSL

CloudFlare es un servicio CDN muy conocido por su plan free que funciona muy bien y suele ser utilizado para mejorar la performance de los sitios, disminuir la carga sobre los servidores y mitigar ataques o picos de tráfico inesperados.

Dentro del plan gratuito también ofrece la opción de tener un certificado SSL para que los sitios se carguen bajo el protocolo HTTPS.

Para configurarlo hay que seguir los siguientes pasos, recomiendo leerlos todos para entenderlos bien antes de realizar cambios en un sitio:

1- Alta en CloudFlare: se agrega el dominio en CloudFlare y se siguen sus pasos para configurarlo, lo cual es muy sencillo y no implica mucho más que cambiar los DNS.

2- Se activa el SSL en modo Flexible: una vez que el sitio ya se encuentra funcionando y cargando sin problemas desde los servidores de CloudFlare se debe activar el SSL desde la sección Crypto:

ssl con cloudflare

Sobre la derecha la opción a seleccionar es Flexible la cual permite cargar el sitio desde CloudFlare con HTTPS aún sin tener un certificado SSL instalado en el servidor de origen.

De esta forma la comunicación entre CloudFlare y los visitantes del sitio se realiza de forma segura, mientras que los datos entre el servidor de origen y los servidores de CloudFlare viajan por HTTP.

flexible ssl

En caso de tener un certificado instalado o poder instalarlo en el servidor, se deben utilizar las demás opciones (Full SSL o Full SSL Strict).

En este punto el sitio ya estaría cargando de las dos formas, con HTTP y HTTPS desde CloudFlare. Pero hay un par de detalles importantes a tener en cuenta:

– El plan gratuito de CloudFlare funciona con Universal SSL, un tipo de certificado que no es compatible con los navegadores y sistemas operativos más antiguos como Windows XP. El sitio funcionaría bien en todos los demás sistemas y navegadores, pero en Windows XP (bajo IE y Chrome) aparecería una advertencia del navegador indicando que hay un problema con el certificado (ERR_SSL_VERSION_OR_CIPHER_MISMATCH).

La solución a este error es utilizar alguno de los planes de pago de CloudFlare que funcionan con un certificado SSL que es compatible con todos los navegadores y sistemas.

Esto es sin dudas una desventaja ya que aún hay muchas personas que utilizan Windows XP y se asustan al ver advertencias de seguridad en sus pantallas.

– Otro punto importante a tener en cuenta para que el HTTPS funcione de forma adecuada, es que todos los recursos como los archivos CSS, JS e imágenes se deben cargar bajo URLs con https. De lo contrario el diseño de la web podría mostrarse mal y aparecerían errores conocidos como mixed content.

3- Se redirecciona desde HTTP hacia HTTPS: Para que el sitio siempre se cargue con HTTPS se puede utilizar a CloudFlare para que lo redireccione automáticamente, sin necesidad de hacerlo desde el servidor propio.

Esto se logra creando una regla desde la sección Page Rules como se explica en esta página del soporte, simplemente hay que escribir http://*spamloco.net/* como regla (cambiando spamloco.net por el dominio propio) y seleccionar Always Use HTTPS.

redireccion https en cloudflare

Se guardan los cambios y el sitio ya debería de redireccionar hacia HTTPS con un 301, cosa que podemos verificar con una herramienta como urivalet.com o Explorar como Google de la Search Console.

Esto también puede solucionar un problema de redirecciones infinitas o loops que se pueden ocasionar cuando se utiliza el sistema Flexible SSL y redirecciones hacia HTTPS configuradas en el servidor propio.

En WordPress hay que instalar un plugin:

Si la configuración se está realizando sobre un sitio con WordPress, en este punto es conveniente seguir los pasos que recomiendan en esta página del soporte de Cloudflare.

Ahí recomiendan instalar un plugin llamado CloudFlare Flexible SSL que soluciona el problema de los loops infinitos cuando se activa el SSL Flexible en CloudFlare y también permite que el blog funcione bajo HTTPS sin necesidad de cambiar la URL en los Ajustes Generales de WordPress.

También recomiendan instalar el plugin de CloudFlare que detecta las IPs de los visitantes (este no se relaciona con lo del SSL pero es recomendado tenerlo) y también se debe crear la regla (Page Rule) antes comentada en el panel de Cloudflare para que el blog se redireccione automáticamente hacia HTTPS sin necesidad de modificar la configuración o el famoso archivo htaccess.

Eso sería todo para que el HTTPS funcione aún sin tener un certificado SSL instalado en el propio servidor, hay que tener en cuenta que si Cloudflare se deja de utilizar el sitio volverá a cargar con HTTP.

No olvidar que con Cloudflare Universal SSL (la versión gratuita) se tienen problemas con los navegadores y sistemas operativos más antiguos.

HTTPS con certificado propio de Let’s Encrypt

Let’s Encrypt es una nueva CA (Certificate Authority) sin ánimo de lucro que permite obtener certificados SSL de forma gratuita, su objetivo es que todos puedan asegurar sus sitios sin necesidad de gastar dinero comprando certificados.

Son sencillos de instalar con su herramienta llamada certbot que facilita todos los pasos que se deben seguir según el tipo de servidor.

Por ejemplo en un servidor con Apache y Debian sólo hay que ejecutar un par de comandos en la terminal SSH para que el certificado se instale.

cerbot herramienta
Seleccionar el tipo de servidor para ver los pasos de instalación

El problema es que para realizar una instalación de este tipo se debe tener un servidor VPS o Dedicado donde se tiene mayor control, los servidores compartidos o shared hosting generalmente no permiten que los usuarios instalen sus propios certificados (para ellos es un negocio y te los quieren vender).

Aún así algunos servicios de hosting ya están ofreciendo en sus planes compartidos la opción de utilizar Let’s Encrypt para tener un certificado de forma gratuita.

Uno de estos servicios es Dreamhost que permite activarlos con un simple clic, aún en sus planes más baratos de alojamiento.

dreamhost ssl gratis
Dreamhost en sus planes compartidos permite utilizar Let’s Encrypt

Con esta opción de Dreamhost el certificado de Let’s Encrypt se activa y se configura automáticamente.

Para realizar la instalación manual en un servidor VPS o Dedicado les recomiendo leer con atención toda la documentación y seguir los pasos que indica Let’s Encrypt, ellos cuentan además con una comunidad muy activa donde ayudan a los usuarios.

Pero hay un par de detalles a comentar:

Una vez que el certificado se instala en el servidor se debe realizar una configuración manual del SSL Cipher ingresando estos valores, esta es una opción de configuración que en servidores con cPanel se encuentra en WHM -> Apache Configuration -> Global Configuration.

Es necesario hacerlo para que el certificado funcione de forma correcta en Windows XP y los navegadores antiguos como Internet Explorer 8.

Para verificar si la configuración es correcta y ver qué navegadores son compatibles o no con el certificado, se puede utilizar esta herramienta ingresando simplemente el dominio con el certificado obviamente ya instalado: https://www.ssllabs.com/ssltest/analyze.html

Otro detalle a tener en cuenta es que al compartir la IP del servidor con varios dominios que tengan el SSL, sólo uno de ellos (el primario) será compatible con los navegadores antiguos que no soportan SNI (Server Name Indication) como Internet Explorer 8 en Windows XP. El resto de los dominios mostrarán un mensaje de error relacionado con el certificado.

Para solucionar esto se deben utilizar IPs diferentes para cada dominio o cambiar el dominio primario desde WHM -> SSL/TLS -> Manage SSL Hosts.

En un hosting compartido como el de Dreamhost sucedería lo mismo ya que las IPs se comparten con varios sitios, pero es posible adquirir IPs únicas para cada sitio pagando un monto extra.

¿Qué hacer luego de tener funcionando el HTTPS?

Hay varias herramientas online que se pueden utilizar para testear el estado del SSL, un par de ellas son este SSL Checker y este SSL Server Test de Qualys.

También se puede navegar por las distintas páginas del sitio para asegurarse de que todas carguen con el candado de color verde y no se generen errores de carga conocidos como mixed content que aparecen cuando hay recursos que aún se cargan bajo el protocolo HTTP.

A nivel de Google hay que tener en cuenta que al cambiar un sitio de HTTP hacia HTTPS se está cambiando su URL, es como un cambio de dirección y lo más importante es que las redirecciones 301 desde HTTP hacia HTTPS funcionen de forma correcta.

Desde la Search Console (ex Webmasters Tools) no es necesario indicar que se ha realizado un cambio de dirección, de hecho la opción no se encuentra disponible para estos casos, pero no hay que preocuparse porque el 301 ya es señal suficiente para que Google entienda que la dirección ha cambiado.

Lo que se debe hacer es dar de alta la versión HTTPS del sitio en la Search Console (como una nueva propiedad), ya que será la versión principal que se utilizará de ahora en adelante. También para facilitar la migración y la actualización de los resultados de búsqueda se pueden enviar desde esta versión dos Sitemaps, uno con las direcciones nuevas bajo HTTPS y otro con las direcciones antiguas HTTP para que el GoogleBot las pueda rastrear con facilidad y detectar que están redireccionadas.

sitemaps http y https en serach console

También hay que asegurarse de que las etiquetas rel=»canonical», en caso de utilizarlas, estén correctamente configuradas, es decir apuntando hacia las versiones HTTPS. Y el archivo robots.txt debe existir con el mismo contenido que tenía la versión HTTP, no es conveniente que responda con un 404 o que no exista porque Google podría dejar de rastrear el sitio.

Espero que la información sea de utilidad y en caso de dudas pueden dejar un comentario o pasar por el foro de ayuda.

7 comentarios en «HTTPS gratis con Cloudflare o los certificados SSL de Let’s Encrypt»

  1. Disculpen accedí a cloudflare pero el problema,.. que cuando ingreso a mi link,. ,me sale o envía una pagina blanca con una url muy distinto al mio,..y cuando cancelo me sale error. y aparece varias ventanas consecutivamente. ayúdenme como es eso explíquenme por favor

    Responder
  2. La version gratuita de Clouflare funciona para recibir pagos en un ecommerce? por otro lado, después de activarlo cuantas horas pasan para que el cargue en HTTPS ?

    Saludos.

    Responder
    • Sí, en un ecommerce también funcionaría, al activarlo lo que sucederá es que todo el sitio pasaría a funcionar bajo HTTPS.

      Una vez que se activa comienza a funcionar al instante gracias a la redirección de HTTP hacia HTTPS.

      Responder
  3. Hola Luis, creo que ya lo solucionaste, pero lo que sucedía es que tenías elementos en la web (como imágenes, archivos .css, etc) que aún se cargaban con el protocolo http, los podrás ver en el código fuente o con el inspector de elementos de Chrome como se explica aquí.

    Es lo que se conoce como contenido mixto o error Mixed Content, simplemente se debe cambiar la ruta http por https y se soluciona.

    Responder

Deja un comentario