LINUX

Cómo configurar Nginx con Let’s Encrypt usando ACME en Ubuntu 20.04

En un tutorial anterior, describimos cómo obtener un certificado SSL / TLS gratuito de Let’s Encrypt utilizando Certbot.

En este tutorial, nos gustaría mostrarle otra forma en que puede obtener y renovar fácilmente un certificado SSL / TLS gratuito de Let’s Encrypt usando el acme.sh script en Ubuntu 20.04.

Si aún no tiene un servidor web NGINX que funcione, aquí tiene una guía de instalación fácil de NGINX que puede seguir.

Obtener acme.sh

los acme.sh El script de shell automatiza la emisión y renovación de certificados gratuitos de Let’s Encrypt. Puede obtener el script acme.sh descargándolo directamente de la web o clonando su proyecto git.

Descarga acme.sh de la web

Ejecute cualquiera de los dos comandos siguientes para descargar y ejecutar el script acme.sh.

$ curl https://get.acme.sh | sh

O

$ wget -O -  https://get.acme.sh | sh

A continuación se muestra un ejemplo de lo que puede esperar cuando se ejecuta el script.

$ wget -O -  https://get.acme.sh | sh
 --2021-02-16 11:55:47--  https://get.acme.sh/
 Resolving get.acme.sh (get.acme.sh)… 2606:4700:3032::6815:223e, 2606:4700:3031::ac43:c710, 172.67.199.16, …
 Connecting to get.acme.sh (get.acme.sh)|2606:4700:3032::6815:223e|:443… connected.
 HTTP request sent, awaiting response… 200 OK
 Length: unspecified [text/html]
 Saving to: ‘STDOUT’
 [ <=>                ]     937  --.-KB/s    in 0s 
 2021-02-16 11:55:47 (11.8 MB/s) - written to stdout [937]
 % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                  Dload  Upload   Total   Spent    Left  Speed
 100  204k  100  204k    0     0  3350k      0 --:--:-- --:--:-- --:--:-- 3350k
 [Tue 16 Feb 2021 11:55:47 AM UTC] Installing from online archive.
 [Tue 16 Feb 2021 11:55:47 AM UTC] Downloading https://github.com/acmesh-official/acme.sh/archive/master.tar.gz
 [Tue 16 Feb 2021 11:55:47 AM UTC] Extracting master.tar.gz
 [Tue 16 Feb 2021 11:55:47 AM UTC] It is recommended to install socat first.
 [Tue 16 Feb 2021 11:55:47 AM UTC] We use socat for standalone server if you use standalone mode.
 [Tue 16 Feb 2021 11:55:47 AM UTC] If you don't use standalone mode, just ignore this warning.
 [Tue 16 Feb 2021 11:55:47 AM UTC] Installing to /home/shola/.acme.sh
 [Tue 16 Feb 2021 11:55:47 AM UTC] Installed to /home/shola/.acme.sh/acme.sh
 [Tue 16 Feb 2021 12:05:54 PM UTC] Installing alias to '/home/shola/.bashrc'
 [Tue 16 Feb 2021 12:05:54 PM UTC] OK, Close and reopen your terminal to start using acme.sh
 [Tue 16 Feb 2021 11:55:47 AM UTC] Installing cron job
 47 0 * * * "/home/shola/.acme.sh"/acme.sh --cron --home "/home/shola/.acme.sh" > /dev/null
 [Tue 16 Feb 2021 11:55:47 AM UTC] Good, bash is found, so change the shebang to use bash as preferred.
 [Tue 16 Feb 2021 11:55:48 AM UTC] OK
 [Tue 16 Feb 2021 11:55:48 AM UTC] Install success!

Clonar proyecto git acme.sh

Alternativamente, ejecute los comandos debajo de uno por línea, para clonar el proyecto git acme.sh y ejecutar el script.

$ git clone https://github.com/acmesh-official/acme.sh.git
$ cd acme.sh
$ ./acme.sh --install

Independientemente del método que elija utilizar, una vez que vea el «¡Instale el éxito!«, puede cerrar la ventana del terminal y volver a abrirla para validar la instalación.

Para ver la información de uso de acme.sh, ejecute el siguiente comando.

$ acme.sh -h

También puede ejecutar el siguiente comando para verificar la versión de acme.sh.

$ acme.sh --version

Generar un certificado

Para generar un solo certificado para un solo dominio, ejecute el siguiente comando.

Reemplazar tudominio.com con su dominio registrado. Además, reemplace /var/www/yourdomain.com con la carpeta raíz del sitio web de su dominio, según corresponda.

$ acme.sh --issue -d yourdomain.com -w /var/www/yourdomain.com

Para varios dominios / subdominios que comparten la misma carpeta raíz del sitio web, puede ejecutar el siguiente comando para emitir un certificado.

$ acme.sh --issue -d yourdomain.com -d www.yourdomain.com -d subdomain.yourdomain.com -w /var/www/yourdomain.com

Los certificados generados se almacenarán en ~ / .acme.sh / tudominio.com

Instale el certificado en NGINX usando acme

Después de generar el certificado a través del script acme.sh, el siguiente paso es instalarlo en NGINX. Primero, cree una carpeta donde se copiará el certificado generado.

$ sudo mkdir -p /etc/nginx/certs/yourdomain.com

Ejecute el siguiente comando para instalar el certificado. No olvides reemplazar tudominio.com con su dominio registrado.

$ acme.sh --install-cert -d yourdomain.com --key-file /etc/nginx/certs/yourdomain.com/key.pem --fullchain-file /etc/nginx/certs/yourdomain.com/cert.pem --reloadcmd "service nginx force-reload"

Actualizar el archivo de bloque del servidor NGINX

El último paso es actualizar el archivo de bloqueo del servidor de su dominio para incluir las directivas relacionadas con SSL.
Ejecute el siguiente comando para editar el archivo de bloqueo del servidor.

$ sudo nano /etc/nginx/sites-available/yourdomain.com

A continuación, agregue las siguientes líneas.

listen [::]:443 ssl ipv6only=on;
listen 443 ssl;
ssl_certificate /etc/nginx/certs/cloudindevs.com/cert.pem;
ssl_certificate_key /etc/nginx/certs/cloudindevs.com/key.pem;

Después de las adiciones, el archivo de bloqueo de su servidor debería verse como lo que ve en la imagen a continuación. Las nuevas incorporaciones están resaltadas en rojo. Además, observe que se han comentado las directivas de escucha para el puerto 80.

Actualice el archivo de bloque del servidor NGINX para usar SSL
Actualice el archivo de bloque del servidor NGINX para usar SSL

Guarde los cambios y cierre el archivo.

Reinicie NGINX con:

$ sudo systemctl restart nginx

Visite su sitio web en un navegador para confirmar que la comunicación segura ahora está habilitada.

Renovación de certificado

Los certificados emitidos por Let’s Encrypt se renovarán automáticamente cada 60 días.

Pero también puede renovar manualmente el certificado si lo desea. Ejecute el siguiente comando.

$ acme.sh --renew -d yourdomain.com --force

Para detener la renovación del certificado, ejecute lo siguiente.

$ acme.sh --remove -d yourdomain.com

Actualizar acme.sh

Se recomienda utilizar siempre la última versión de acme.sh. Ejecute el siguiente comando para asegurarse de que acme.sh se actualice automáticamente.

$ acme.sh --upgrade --auto-upgrade

Para deshabilitar la actualización automática de acme.sh, ejecute el siguiente comando.

$ acme.sh --upgrade --auto-upgrade 0

Si no desea que acme.sh se actualice automáticamente, utilice el siguiente comando para actualizarlo manualmente.

$ acme.sh --upgrade

Conclusión

En esta guía, describimos los pasos para obtener y renovar certificados SSL / TLS gratuitos de Let’s Encrypt utilizando el script de shell acme.sh en Ubuntu. Este método es una alternativa al uso de la herramienta Certbot. Nos gustaría conocer su experiencia con estas herramientas.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar