Certificado SSL en Subdominios con Cloudflare.

Es ya muy conocido Let’s Encrypt por la concesión de certificados SSL gratuitos que podemos crear para securizar u otorgar a nuestro sitio Web un extra de seguridad, ya que si instalamos un certificado SSL y hacemos los pertinentes cambios (evitar contenido, mixto, redirigir, etc…)tendremos nuestro sitio Web bajo un flamante HTTPS verdoso.

Igualmente, Cloudflare se posiciona en una alternativa bastante interesante tanto en niveles Free como de Pago para conseguir un extra de rapidez a nuestro sitio con su CDN y por supuesto evitar (o intentarlo xD) ataques de denegación de servicio (DoS).

Juntos, el certificado SSL y Cloudflare, hacen que tu sitio sea más seguro. No seguro 100% sino más de lo que estaría sin Cloudflare o SSL, evidentemente nos dejamos atrás numerosos cambios a realizar para mejorar esta “seguridad” de la que hablamos.

El tema de este artículo viene a tratar como conseguir generar un certicado Let’s Encrypt para un subdominio partiendo de que nuestro dominio está ya bajo el “paragua protector” de Cloudflare.

Partimos de la base de que tenemos un dominio hola123.es que ya configuramos el certificado Let’s Encrypt con el certbot que podemos descargar de Github y realizar el proceso. Obviamente, es preferible, que si estamos configurando(securizando) el dominio desde cero, pues primero le instalemos el certificado SSL y luego lo metamos en Cloudflare para evitar problemas DNS, que es el motivo principal por el que se ha hecho este artículo, por lo que vamos a suponer que tenemos un dominio, hola123.es, con su certificado SSL y bajo Cloudflare.

El procedimiento “habitual” utilizando el comando “./letsencrypt-auto –apache” (apache o nginx) no nos va a chutar, ya que nos mostrará algo similar a esto que muestra la imagen:

A tener en cuenta que un certificado SSL de Let’s Encrypt vale solo para un alias, o sea, el certificado generado para hola123.es solo vale para hola123.es y no subdominios. Por tanto tenemos que generar uno desde el servidor.

La idea es generar un certificado para un subdominio de hola123.es. Lo llamaremos certificado.hola123.es (me lo he currado eh xD).

A tener en cuenta para este proceso:

  • El dominio está ya bajo Cloudflare.
  • Tenemos acceso SSH a nuestro servidor.
  • El certificado es para un subdominio.

Teniendo en cuenta esto ya solo nos queda comenzar el proceso. Lo listaré para que sirva a modo de tutorial.

  • Conectarse via SSH al servidor donde tenemos alojado el sitio.
  • Con GIT, clonar el repositorio de https://github.com/certbot/certbot “git clone https://github.com/certbot/certbot.git” (sin comillas)
  • Entrar al directorio clonado*.
  • Entrar en nuestra cuenta Cloudflare.
  • Ir a la opción DNS tal y como vemos en la imagen.
  • Ahora volveremos a nuestro servidor, conectado bajo SSH y en nuestra carpeta CERTBOT.
  • Vamos a lanzar un comando que va a ser vital para poder realizar o poder llegar a generar nuestro certificado. Vital porque de la forma “tradicional” o natural que se hace para generarlo sin que esté detrás de Cloudflare, va a fallar porque hay un error TLS de comunicación, debido a que el servidor no puede resolver debidamente. Dicho comando es:

./certbot-auto certonly –manual -d hola123.es -d certificado.hola123.es –preferred-challenges=”dns”

  • Veremos algo similar a esto:

  • Ir al panel Cloudflare y añadir los campos que se mencionan anteriormente, quedando similar a la imagen. Comentar que hay que rellenar DOS campos, es decir, realizar el mismo proceso que muestra la imagen DOS veces, con los DOS DNS que nos da y los dos TOKEN.
  • Una vez rellenado, procedemos a pulsar ENTER para finalizar el proceso. Si todo ha salido debidamente veremos lo siguiente:

IMPORTANTE: Una vez comprobado que están los datos rellenos (no importa si el campo Name, os acorta el nombre, copiar y pegarlo tal y como os aparece en la consola)debemos pulsar ENTER en la consola donde hemos ejecutado el comando anterior y que está a la espera de comprobarlo.

¿Por qué?

Porque procederá a realizar la comprobación de que realmente es el administrador del sitio el que está generando el certificado para este subdominio y por ello tenemos que rellenar los datos en Cloudflare y además, tenemos poco margen de error porque solo nos funcionará la petición (vía comando) una vez cada 60minutos aproximadamente (creo que es).

Resumiendo, si ejecutas el comando y no realizas el paso de rellenar DNS y token en Cloudflare o lo rellenas mal, deberás esperar 1 hora hasta que puedas ejecutar el comando con éxito y vuelvan a aparecerte DNS y nuevos token para introducir en los campos de CF. Lo digo con conocimiento de causa xD.

Aclaración: Hay una carpeta que hace referencia a cloudflare. Se llama “certbot-dns-cloudflare“. Aclarar que NO me ha funcionado el proceso o NO he podido utilizar esta carpeta por diversos problemas por lo que tomé una alternativa  buscando por información por Internet y utilizando el comando mencionado en el artículo.

Espero que os haya gustado y sobre todo que os haya servido en algún momento. Muchas gracias!

@ManoloGaritmo

¡Saludos!