Let’s Encrypt: Certificados SSL/TLS Gratuitos

Let’s Encrypt: Certificados SSL/TLS Gratuitos

Let’s Encrypt: Certificados SSL/TLS Gratuitos

  • Autor: fjavimartin

  • Fecha de Creación: 06/03/2017

  • Categorías:

    • Let's encrypt,
    • Https,
    • Apache,
    • Certificados

Un certificado muy básico suele tener un costo de unos 42,24€/año, pero si además queremos que nos sirva para un número indeterminado de subdominios puede alcanzar los 179 €/año en los sitios más económicos.

Hoy descubriremos let’s encrypt y veremos que de una manera muy sencilla podemos hacernos con un certificado gratuito para asegurar nuestra web.

¿Que es Let’s Encrypt?

Let’s encrypt es una entidad certificadora abierta, gratuita y automática. Es un servicio suministrador por el Internet Security Research Group (ISRG).

El objetivo de esta organización es suministrar los certificados necesarios para habilitar HTTPS (SSL/TLS) en cualquier sitio web y de esta manera fomentar el uso seguro de estos servicios.

Las principales claves de Let’s Encrypt son:

  • Gratis: El coste por la obtención de cualquier certificado seguro será cero.
  • Automático: El software instalado en el servidor web podrá interactuar con Let’s Encrypt para obtener, configurar y renovar los certificados.
  • Seguro: Let’s Encrypt servirá de plataforma para las mejores prácticas sobre TLS, tanto en el lado de la autoridad certificadora como en el de los administradores de sitios para asegurar sus webs.
  • Transparent: Todos los certificados generados y revocados estarán a disposición de cualquiera que quiera inspeccionarlos.
  • Abiertos: Todo el proceso para la generación y renovación de certificados será un estándar abierto que cualquiera puede adoptar.
  • Cooperar: Más allá de los servicios que suministra, Let’s Encrypt es un esfuerzo por beneficiar a la comunidad más allá del control de cualquier organización.

¿Quién patrocina Let’s Encrypt?

Los principales patrocinadores de esta iniciativa son los gigantes de internet entre los que se encuentran: Google, Facebook, cisco, mozilla, etc.

Imagen 1 - Sponsors de Let's Encrypt

Imagen 1 - Sponsors de Let's Encrypt

Cualquiera puede patrocinar este proyecto para asegurar la supervivencia del mismo, desde pequeñas empresas a clientes particulares mediante pequeñas donaciones a través de Paypal.

Creación del certificado (ubuntu)

El proceso para la creación de un certificado deberemos realizarlo desde la propia máquina del servidor web.

Para empezar a instalar necesitaremos instalar git:

# apt-get install git

Clonamos el repositorio del proyecto:

$ git clone https://github.com/letsencrypt/letsencrypt /home/usuario/git/letsencrypt

Nos vamos al directorio recién creado:

$ cd /home/usuario/git/letsencrypt

En este punto deberemos parar el servidor web puesto que el proceso de let’s encrypt utilizará los mismos puertos para solicitar los certificados y también deberemos ejecutar estas instrucciones con usuario root.

# ./letsencrypt-auto certonly –standalone -d <dominio>

Para solicitar varios dominios a la vez:

# ./letsencrypt-auto certonly –standalone -d <dominio> -d <dominio>

Los certificados generados se almacenarán en /etc/letsencrypt/live.

Renovación de certificados

Para renovar los certificados ejecutaremos el siguiente comando como usuario root:

# ./letsencrypt-auto renew

La salida del comando será algo parecido a esto:

usuario@servidor:~/git/letsencrypt$ sudo ./letsencrypt-auto renew
[sudo] password for fjmlillo: 
Saving debug log to /var/log/letsencrypt/letsencrypt.log

-------------------------------------------------------------------------------
Processing /etc/letsencrypt/renewal/dominio.es.conf
-------------------------------------------------------------------------------
Cert is due for renewal, auto-renewing...
Renewing an existing certificate
Performing the following challenges:
tls-sni-01 challenge for dominio.es
Waiting for verification...
Cleaning up challenges
Generating key (2048 bits): /etc/letsencrypt/keys/0001_key-certbot.pem
Creating CSR: /etc/letsencrypt/csr/0001_csr-certbot.pem

-------------------------------------------------------------------------------
new certificate deployed without reload, fullchain is
/etc/letsencrypt/live/dominio.es/fullchain.pem
-------------------------------------------------------------------------------

Congratulations, all renewals succeeded. The following certs have been renewed:
  /etc/letsencrypt/live/dominio.es/fullchain.pem (success)

Podemos ir un poco más allá automatizando el proceso con la siguiente línea en nuestro crontab:

30 2 * * 1 /opt/letsencrypt/letsencrypt-auto renew >> /var/log/le-renew.log

Revocar certificados

Revocar un certificado es muy sencillo, solamente tendremos que indicar la ruta a la key del certificado que queramos revocar y, como en los casos anteriores, ejecutaremos el comando como root:

# ./letsencrypt-auto revoke --cert-path /etc/letsencrypt/live/<dominio>/cert.pem --key-path /etc/letsencrypt/live/<dominio>/privkey.pem

Actualización del repositorio Let’s Encrypt

$ cd /home/usuario/git/letsencrypt
$ git pull

Configuración de https en apache

Para configurar https en cualquier de nuestros sitios web deberemos cargar el módulo ssl de apache si es que no lo tenemos cargado ya:

# a2enmod ssl

Crearemos un VirtualHost nuevo para nuestra conexión segura tomando de partida la configuración normal y añadiremos las siguientes líneas al final:

SSLEngine on
 
SSLCertificateFile /etc/letsencrypt/live/<dominio>/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/<dominio>/privkey.pem

Nuestro VirtualHost se parecerá bastante a lo siguiente:

<VirtualHost *:443>
        ServerAdmin soporte@dominio.es
        ServerName www.dominio.es

        DocumentRoot /var/www/
        RewriteEngine On
        RewriteOptions inherit

        <Directory /var/www/>
                Options FollowSymLinks Indexes
                AllowOverride All
                order allow,deny
                allow from all
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/dominio_error.log
        CustomLog ${APACHE_LOG_DIR}/dominio_access.log combined

        SSLEngine on
        SSLCertificateFile /etc/letsencrypt/live/<dominio>/cert.pem
	SSLCertificateKeyFile /etc/letsencrypt/live/<dominio>/privkey.pem
</VirtualHost>

Por último tendremos que reiniciar apache:

# service apache2 restart

Forzar conexión por https

Ya que tenemos configurado nuestro dominio por https quizás nos interese forzar la conexión de todos nuestros usuarios por este medio para lo que deberemos activar el siguiente módulo en apache:

# a2enmod rewrite

Editamos el VirtualHost del dominio que escucha en el puerto 80 para que redirija a nuestro sitio seguro con las siguientes líneas:

RewriteEngine on
 
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]

Reiniciamos apache para que coja los cambios:

# service apache2 restart

Fuentes

Todos los Derechos Reservados © 2016

Funciona con Drupal