Este artículo explica cómo generar un certificado SSL con certbot versión 0.10.02 (Debian 9.4) instalado de paquete. certbot es la herramienta provista por la EFF (Electronic Frontier Foundation) para generar certificados SSL gratuitos de Let's Encrypt.

Para comenzar, instalar certbot:

root@linuxito:~# apt-get install certbot

Generar un certificado SSL es tan simple como ejecutar certbot certonly:

root@linuxito:~# certbot certonly
Saving debug log to /var/log/letsencrypt/letsencrypt.log

How would you like to authenticate with the ACME CA?
-------------------------------------------------------------------------------
1: Place files in webroot directory (webroot)
2: Spin up a temporary webserver (standalone)
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 1

El primer paso consiste en especificar el dominio a certificar, ingresar "1" y luego ingresar el dominio, por ejemplo "www.linuxito.com":

Please enter in your domain name(s) (comma and/or space separated)  (Enter 'c'
to cancel)www.linuxito.com
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for www.linuxito.com

Select the webroot for www.linuxito.com:
-------------------------------------------------------------------------------
1: Enter a new webroot
-------------------------------------------------------------------------------
Press 1 [enter] to confirm the selection (press 'c' to cancel): 1

Si se requiere que el certificado valide para más de un dominio (por ejemplo "www.linuxito.com" y "linuxito.com"), ingresar todos los dominios separados con coma o espacio.

A continuación se debe ingresar la raíz del sitio Web (se supone que el servicio Web ya se encuentra funcionando). Seleccionar "1" y luego especificar la ruta a la raíz del sitio Web, por ejemplo "/var/www/linuxito.com/":

Input the webroot for www.linuxito.com: (Enter 'c' to cancel):/var/www/linuxito.com/
Waiting for verification...
Cleaning up challenges
Generating key (2048 bits): /etc/letsencrypt/keys/0003_key-certbot.pem
Creating CSR: /etc/letsencrypt/csr/0003_csr-certbot.pem

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at
   /etc/letsencrypt/live/www.linuxito.com/fullchain.pem.
   Your cert will expire on 2018-10-08. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot
   again. To non-interactively renew *all* of your certificates, run
   "certbot renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

Fin. El certificado se ha generado con éxito y ha quedado almacenado en el siguiente directorio:

root@linuxito:~# ll /etc/letsencrypt/live/www.linuxito.com/
total 4
lrwxrwxrwx 1 root root  52 Jul 10 13:01 cert.pem -> ../../archive/www.linuxito.com/cert1.pem
lrwxrwxrwx 1 root root  53 Jul 10 13:01 chain.pem -> ../../archive/www.linuxito.com/chain1.pem
lrwxrwxrwx 1 root root  57 Jul 10 13:01 fullchain.pem -> ../../archive/www.linuxito.com/fullchain1.pem
lrwxrwxrwx 1 root root  55 Jul 10 13:01 privkey.pem -> ../../archive/www.linuxito.com/privkey1.pem
-rw-r--r-- 1 root root 543 Jul 10 13:01 README

La cadena de certificación completa corresponde con el archivo fullchain.pem (certificado junto con el certificado de la CA intermedia), mientras que la clave privada del certificado corresponde con el archivo privkey.pem.

Instalación del certificado en un servidor Nginx

Editar el archivo de configuración del servidor:

root@linuxito:~# nano /etc/nginx/nginx.conf

En la sección server correspondiente al sitio Web en cuestión, configurar correctamente las variables ssl_certificate (ruta a la cadena completa) y ssl_certificate_key (ruta a la clave privada):

    server {
        listen       443 ssl;
        server_name  www.linuxito.com;

        ssl_certificate     /etc/letsencrypt/live/www.linuxito.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/www.linuxito.com/privkey.pem;

Además verificar que se utilice el puerto 443 y se incluya la directiva ssl que habilita el uso de HTTP/S.

Si se desea endurecer la seguridad de la implementación de SSL para sacar una A+ en el Test de SSL de Qualys, revisar los artículos Hardening de SSL/TLS en servidores HTTPS y Hardening de servidores Nginx sobre FreeBSD.

Recargar el servidor Nginx para que tome los cambios en la configuración:

root@linuxito:~# service nginx reload


Tal vez pueda interesarte


Compartí este artículo