Instalar certificado Let’s Encrypt en DonDominio
Hace un tiempo que conocí la herramienta online ZeroSSL. Una página web que facilita conseguir un certificado SSL gratuito de Let’s Encrypt en sencillos pasos. Igualmente se me antojó utilizarla con uno de los hostings que utilizo y que no cuenta con la opción de generar de certificados gratuitos de Let’s Encrypt: DonDominio.
El proceso es bastante sencillo pero igualmente carece un poco de sentido. Los certificados Let’s Encrypt son válidos por 90 días, tras este tiempo, hay que renovar dichos certificados y esto normalmente se realiza con un script ejecutado en el propio servidor. Al tratarse de un hosting compartido esta opción no es posible y, por lo tanto, habría que hacerlo manualmente.
¿Para qué nos puede servir esta opción? Pocas opciones se me ocurren, pero una de ellas es desarrollar nuestro sitio web sobre HTTPS y no pagar por el certificado SSL hasta la fecha de lanzamiento.
Si no conoces Let’s Encrypt, a resumidas cuentas es un proyecto de software libre que tiene como fin hacer que internet sea más seguro o, al menos, un poco más seguro. Una entidad de certificación (CA o Certification Authority) gratuita que nació en 2016 y que cuenta con el apoyo de grandes entidades como OVH, Akamai, Cisco o la Fundación Mozilla.
Cómo conseguir un certificado SSL Let’s Encrypt gratis
El primer paso para conseguir un certificado SSL de la entidad certificadora Let’s Encrypt es generar un CSR, Certificate Signing Request o Solicitud de Firma de Certificado. Aprovechando que este caso práctico es exclusivo para DonDominio, remitimos a su FAQ: ¿Qué es un CSR?.
Esta operación podemos hacerla de varias formas, una de ellas es desde la terminal de comandos de un sistema operativo Linux, donde utilizando su herramienta generaremos aquellos ficheros necesarios para obtener nuestro certificado gratuito.
Y otra, esta mucho más fácil y rápida, es utilizando la herramienta online que nos ofrece crear nuestro certificado a golpe de click. La herramienta es accesible desde ZeroSSL.com, es gratuita y en las siguientes líneas explico como utilizarla para conseguirlo apenas 5 minutos.
Generar certificado SSL gratuito con ZeroSSL
En ZeroSSL tenemos la opción «Certificado SSL GRATIS«, que permite realizar todo el proceso para obtener un certificado SSL de Let’s Encrypt (y cualquiera en general): solicitud de firma, verificación y obtención del certificado. La primera pantalla llamada «1 Detalles» nos requerirá nuestro correo electrónico (el cual es opcional) y el dominio para el que queremos el certificado gratuito. En mi caso: x@evaristogz.com y www.evaristogz.com
Para validar que estamos generando un certificado SSL para un dominio y servidor al que tenemos acceso tendremos que verificarlo mediante algunos de los métodos ofrecidos.
Se ofrecen dos tipos de métodos de verificación: por HTTP o por DNS.
En nuestro caso en concreto, lo haremos mediante HTTP ya que es más inmediato. La opción de verificar mediante las DNS es más lenta, debido a que han de propagarse los dos registros TXT que incluiríamos en ese caso.
Debemos aceptar los términos del servicio de ZeroSSL y el acuerdo de suscriptor de Let’s Encrypt. Continuamos con el proceso pulsando sobre el botón superior «Siguiente» e indicando que también queremos incluir el dominio sin www.
Seguiremos en la pantalla número uno, pero con el campo inferior derecho relleno. Comienza con una línea que dice «BEGIN CERTIFICATE REQUEST» y es la solicitud de firma del certificado. Nuevamente pulsamos sobre siguiente para que se nos genere una clave privada para Let’s Encrypt en el campo inferior izquierdo. ¿Qué permitirá esto? Gestionar tu certificado con la entidad certificadora.
Para seguir avanzando necesitaremos descargar a nuestro ordenador ambos archivos: la clave privada RSA (account-key.txt) y la solicitud de certificado (domain-csr.txt). Estos archivos debemos de conservarlos para las futuras gestiones que se realicen con el certificado SSL de Let’s Encrypt.
Verificar el certificado SSL en nuestro dominio
El siguiente paso es verificar que el dominio es de nuestra propiedad y que tenemos acceso al servidor. Como comenté antes, en otros proveedores es posible hacerlo mediante DNS, pero en DonDominio solo tenemos la posibilidad HTTP, una opción que tampoco implica demasiada dificultad.
Para ello, en nuestro servidor deberemos alojar dos archivos de texto en una ruta en concreto. Estos ficheros aparecerán para su descarga en el paso «2 Verificación» y deberemos subirlo por FTP a nuestro hosting compartido.
Dentro de /public/ crearemos el directorio .well-known y dentro de él, el directorio acme-challenge donde irán los dos ficheros de texto. Estos ficheros contienen unas cadenas de texto plano que servirán para la verificación inmediata.
Una vez que han sido subidos, podemos comprobar que son accesibles y que la ruta está correcta mediante los enlaces que aparecen en la columna «Archivo» de esta pantalla. En mi caso las direcciones URL serían:
- https://www.evaristogz.com/.well-known/acme-challenge/YkmjX_smbjY_mlv2YK7ba3yKR88GJ0WQiaywcwS2sW8
- https://www.evaristogz.com/.well-known/acme-challenge/hvhPkhB6iiDkjECch7KFCGQNINv4Jp5fafqwIzwak10
Si podéis acceder a las dos direcciones URL que os facilitan y os aparece una cadena de texto, pulsad sobre el botón «Siguiente» para proceder a verificar el dominio.
¡Tu certificado está listo!
Si todo ha ido bien, pasaremos a la última pantalla «3 Certificado» en el que nos indican que nuestro certificado ya está listo y algunas instrucciones/indicaciones.
Nos indican que los certificados generados por Let’s Encrypt tienen una duración de 90 días, por lo que tendrás que renovarlo con las claves RSA y el .CSR. También puedes guardar el ID de tu cuenta.
Al final de la página tendremos disponible para descargar otros dos archivos. El propio certificado, con nombre domain-crt.txt y que comienza con «BEGIN CERTIFICATE» y la clave RSA del certificado de dominio cuyo fichero se descargará con el nombre domain-key.txt.
Cómo instalar Let’s Encrypt en DonDominio
Hagamos recuento, hemos descargado seis archivos: cuatro de ellos debemos de conservarlos (account-key.txt, domain-csr.txt, domain-key.txt y domain-crt.txt) y los otros dos restantes son ficheros de texto que han de estar disponibles en el servidor y que nos valen para la verificación.
Para instalar el certificado necesitaremos el domain-key.txt y el domain-crt.txt, además de consultar un tercero en la página oficial de Let’s Encrypt: el certificado de la autoridad certificadora.
Ya en DonDominio, accedemos al panel de administración de nuestro dominio. Concretamente al apartado Alojamiento web>Subdominios.
En este apartado editamos el subdominio WWW, activamos SSL y nos aparecerá tres pestañas para rellenar con la información de nuestro certificado.
- Certificado. También llamado CRT donde debemos insertar el contenido del fichero domain-crt.txt.
- Clave SSL. El fichero domain-key.txt que sirve para asociar ese dominio.
- Certificados de autoridad. El CA-CRT de Let’s Encrypt, que es la entidad certificadora en este caso.
Tan solo nos falta el certificado de autoridad de Let’s Encrypt, para lo cual recurrimos al apartado «Certificates» su sitio web oficial: https://letsencrypt.org/certificates/ y elegimos uno de los certificados activos. Si deseáis la dirección URL concreta: ISRG Root X1 (self-signed).
Al confirmar, ya tendríamos el campo HTTPS con un tick verde que indica que nuestro certificado SSL está instalado y activo en nuestro dominio.
Ahora, si accedemos a nuestro nombre de dominio con HTTPS, es muy probable que no nos aparezca la barra del navegador de color verde. Si pulsamos sobre el icono de información, nos mostrará que no es completamente segura. Esto se debe a que puede haber algunos recursos que no están cargando con HTTPS y la página web se ofrece con contenido mixto (HTTP y HTTPS).
Igualmente, podemos consultar el certificado y sus detalles: fecha de validez, fecha de expiración, entidad certificadora…
La comprobación de la instalación del certificado SSL en nuestro dominio también podemos hacerla con herramientas online como la que ofrece DonDominio: Verificar SSL online. Esta únicamente comprobará que existe un certificado SSL instalado en un dominio, pero no su funcionamiento.
Por hacer
Después de instalar el certificado SSL gratuito de Let’s Encrypt (y cualquier otro), es necesario realizar una serie de cambios que influyen en el comportamiento del sitio web. Estos dependerán de cómo esté desarrollada tu página web o aplicación web.
Resumo algunos puntos a tener en cuenta:
- Redirigir todo el tráfico HTTP a HTTPS. Esto podrás hacerlo modificando el fichero .htaccess o bien desde la configuración de tu CMS.
- Cambiar direcciones URL de tu sitio web. Los enlaces a tu propia página web o las direcciones URL de las imágenes incrustadas aún usan HTTP, recomendable hacer un reemplazo a través de la base de datos para pasar estos links a HTTPS.
- Comprobar carga de recursos externos. Es necesario que todo recurso externo que cargue en tu sitio web lo haga bajo HTTPS, de lo contrario no aparecerá como seguro. Vigila las referencias a Google Fonts, Font Awesome, jQuery… desde la consola de desarrollador de tu navegador web.
- Modificar la configuración Google Analytics y Google Search Console para que tome en cuenta estos cambios y dé valores correctos.
- Editar direcciones URL de firmas de correo electrónico o perfiles en redes sociales, incluyendo HTTPS.
También hay que tener en cuenta que el certificado SSL de Let’s Encrypt expirará a los 90 días (25/11/2018 en mi caso) y deberemos renovarlo. En un hosting compartido como DonDominio esto nos será un incoveniente.
Es por esto por lo que finalmente acabé adquiriendo un certificado emitido por Comodo, una reconocida entidad certificadora. Su validez es de 365 días y tiene un coste de 7,20€/año (IVA incluido).
Si quieres saber qué empresas de alojamiento web soportan la integración de Let’s Encrypt en hosting compartido, en el Soporte de la Comunidad ofrecen una lista con su estado actual: Web Hosting who support Let’s Encrypt.
«Es por esto por lo que finalmente acabé adquiriendo un certificado emitido por Comodo» eres un crack.
Hay que ser sinceros y reconocer qué es válido y qué no. En mi caso, prefiero pagar el coste de un certificado SSL a tener que estar cada tres meses renovándolo o depender de herramientas externas para «automatizarlo».
Gracias por tu comentario.
Una pregunta, esto por qué pasa? Al inconveniente me refiero.
«El certificado SSL de Let’s Encrypt expirará a los 90 días y deberemos renovarlo. En un hosting compartido como DonDominio esto nos será un incoveniente».
Gracias por el artículo
Let’s Encrypt los emite por 90 días, según dicen, para evitar que así se pierda la clave privada del certificado. Para uso en servidores propios se automatiza esa renovación y hay algunas plataformas que permiten que se renueve de manera automática, pero la validez sería la misma: 3 meses.