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