Let's encrypt es una autoridad certificadora que provee certificados gratuitos X.509 para TLS a través de un proceso automatizado y sencillo evitando el engorroso procedimiento manual de generar e instalar certificados SSL para un sitio. El proyecto fue comenzado por dos empleados de Mozilla en 2012 y a partir del 3 de Diciembre de 2015 entró en Beta pública. El proyecto está respaldado y desarrollado por la Electronic Frontier Foundation, la Universidad de Michigan, Linux Foundation, entre otros. Personalmente creo que este tipo de proyectos son muy importantes, porque permiten utilizar la web de una forma segura sin gastar dinero y alimentar el negocio de los certificados SSL.
A continuación veremos como configurar un sitio para que utilice los certificados de letsencrypt. Aquellos que tengan que lidiar habitualmente con la configuración y generación de certificados SSL van a agradecer la existencia de letsencrypt debido a que el proceso es realmente automático y trivial. Este tutorial está basado en Fedora 23, pero pueden verse las diferentes formas de instalar letsencrypt en este link. En Fedora 23 lo instalamos como cualquier otro programa:
# dnf install letsencryptEsto instalará una cuantas dependencias y el cliente letsencrypt. Antes de continual recomiendo ver la ayuda para ver qué podemos hacer con letsencrypt.
# letsencrypt --help letsencrypt [SUBCOMMAND] [options] [-d domain] [-d domain] ... The Let's Encrypt agent can obtain and install HTTPS/TLS/SSL certificates. By default, it will attempt to use a webserver both for obtaining and installing the cert. Major SUBCOMMANDS are: (default) run Obtain & install a cert in your current webserver certonly Obtain cert, but do not install it (aka "auth") install Install a previously obtained cert in a server revoke Revoke a previously obtained certificate rollback Rollback server configuration changes made during install config_changes Show changes made to server config during installation plugins Display information about installed plugins Choice of server plugins for obtaining and installing cert: (the apache plugin is not installed) --standalone Run a standalone webserver for authentication (nginx support is experimental, buggy, and not installed by default) --webroot Place files in a server's webroot folder for authentication OR use different plugins to obtain (authenticate) the cert and then install it: --authenticator standalone --installer apache More detailed help: -h, --help [topic] print this message, or detailed help on a topic; the available topics are: all, automation, paths, security, testing, or any of the subcommands or plugins (certonly, install, nginx, apache, standalone, webroot, etc)Como vemos, la ayuda es muy clara y fácil de comprender. Vamos a crear un certificado para un sitio, en este caso voy a usar el dominio cardinali.org que es el de mi sitio. Generar el certificado es tan sencillo como ejecutar:
# letsencrypt certonly --webroot --webroot-path /var/www/html/cardinali.org/El asistente nos preguntará por una dirección de correo y los dominios para los cuales se va a generar el certificado. El comando anterior genera un certificado pero no lo configura en nuestro servidor web (certonly) también le indicamos donde están los archivos del sitio (--webroot --webroot-path /var/www/html/cardinali.org/), de esta forma letsencrypt no necesita que paremos el servidor web para comprobar nuestro sitio antes de generar el certificado. Terminado esto, ya podemos configurarlo en nuestro servidor web, los certificados y claves generados y que están activos se encuentran en
/etc/letsencrypt/live/$domain
.
Los certificados que van siendo revocados podemos encontrarlos en /etc/letsencrypt/archive
y sus claves en /etc/letsencrypt/keys
. Los certificado generados por letsencript duran 90 días, por lo que es necesario renovarlos en ese tiempo.
Si bien el proyecto aún está en beta, creo que no faltará mucho para que todos podamos tener nuestra web con https ya sin excusas.
Etiquetas: Fedora, SSL, HTTPS, letsencrypt