Let’s Encrypt se trata de una autoridad de certificación, conocidas con las siglas CA, libre y gratuita impulsada por la Fundación Linux, que permite generar certificados SSL gratuitos y automáticos para nuestros sitios web. El objetivo de la comunidad que está detrás es el de promover que el tráfico de Internet sea seguro.
Detrás de este proyecto se encuentra el apoyo de empresas como Mozilla, Akamai, Google o Facebook. Let’s Encrypt emitió más de 24 millones certificados en su primer año, y la cifra aumenta a diario.
Ellos definen el proyecto de la siguiente manera:
We give people the digital certificates they need in order to enable HTTPS (SSL/TLS) for websites, for free, in the most user-friendly way we can. We do this because we want to create a more secure and privacy-respecting Web.
¿Como funciona?
Let’s Encrypt utiliza el protocolo ACME (Automatic Certificate Management Environment) , el cual se basa en un proceso en dos pasos, por un lado la validación del dominio y la solicitud del certificado. te recomiendo que leas la documentación oficial donde muestra un ejemplo bastante bueno especificando todo el proceso.
Si deseas mas información o formarte acerca de certificados ssl aquí te dejo unos libros interesantes:
Características de Let’s Encrypt
- Los certificados son totalmente gratuitos (Siempre puedes hacer una donación al proyecto). 100% libre, cualquier dueño de su propio dominio puede obtener un certificado confiable.
- La instalación en tu servidor es muy sencilla, más adelante mostraré un ejemplo.
- No requiere de ningún e-mail de confirmación
- Los principales navegadores reconocen estos certificados a la perfección
- Los certificados se renuevan automáticamente. Estos certificados tienen una duración por defecto de 3 meses, pero son renovables.
- Transparente: Todos los certificados emitidos o revocados serán registrados públicamente y estarán disponibles para que cualquier persona pueda inspeccionarlos.
- Open Source: El protocolo de emisión y renovación automática se publicará como un estándar abierto que otros pueden adoptar.
Ejemplo de Instalación con Certbot
Cerbot es una herramienta que permite activar automáticamente el certificado ssl a través de tus certificados Let’s encrypt. Para instalar certbot entra en https://certbot.eff.org/ y selecciona tu sistema operativo y tu servidor web.
En mi caso estoy usando Ubuntu 14.04 y sirviendo la web con Apache. A continuación os detallo la traza de instalación. Lo primero es lanzar cerbot indicando tu servidor web:
certbot --apache
A continuación, te indicará donde dejará el log de debug de la instalación y te preguntará acerca del dominio sobre el que quieres generar los certificados y el email para las renovaciones y avisos de seguridad.
Saving debug log to /var/log/letsencrypt/letsencrypt.log No names were found in your configuration files. Please enter in your domain name(s) (comma and/or space separated) (Enter 'c' to cancel):adrianalonso.es Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): xxxxxx@gmail.com Starting new HTTPS connection (1): acme-v01.api.letsencrypt.org
Te solicitará que aceptes los términos de uso
------------------------------------------------------------------------------- Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.1.1-August-1-2016.pdf. You must agree in order to register with the ACME server at https://acme-v01.api.letsencrypt.org/directory ------------------------------------------------------------------------------- (A)gree/(C)ancel: A
A continuación empezará a ejecutar la acción para obtener el certificado, activar el modulo ssl en el apache y generar tu virtualhost con los certificados descargados:
Starting new HTTPS connection (1): supporters.eff.org Obtaining a new certificate Performing the following challenges: tls-sni-01 challenge for adrianalonso.es Enabled Apache socache_shmcb module Enabled Apache ssl module Waiting for verification... Cleaning up challenges Generating key (2048 bits): /etc/letsencrypt/keys/0000_key-certbot.pem Creating CSR: /etc/letsencrypt/csr/0000_csr-certbot.pem Created an SSL vhost at /etc/apache2/sites-available/000-default-le-ssl.conf Enabled Apache socache_shmcb module Enabled Apache ssl module Deploying Certificate to VirtualHost /etc/apache2/sites-available/000-default-le-ssl.conf Enabling available site: /etc/apache2/sites-available/000-default-le-ssl.conf
A continuación te pregunta si quieres mantener las dos opciones u obligar a que toda petición http se redigira a https
Please choose whether HTTPS access is required or optional. ------------------------------------------------------------------------------- 1: Easy - Allow both HTTP and HTTPS access to these sites 2: Secure - Make all requests redirect to secure HTTPS access ------------------------------------------------------------------------------- Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 1 ------------------------------------------------------------------------------- Congratulations! You have successfully enabled https://adrianalonso.es
Yo elegí que mantuviera las dos, pero posteriormente configuré en mi htaccess esta redirecicón 301
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] RewriteRule ^ https://%1%{REQUEST_URI} [R=301,L] </IfModule>
Finalmente te dará una url donde puedes verificar la validez de este certificado y toda su información publica. Espero que entre todos securizemos Internet gracias a estas grandes iniciativas.