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 la 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

El 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.

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

O

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

A continuación se muestra un example 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/ Resolviendo get.acme.sh (get.acme.sh)… 2606: 4700: 3032 :: 6815: 223e, 2606: 4700: 3031 :: ac43: c710, 172.67.199.16,… Conectando a get.acme.sh (get.acme.sh) | 2606: 4700: 3032 :: 6815: 223e |: 443… conectado. Solicitud HTTP enviada, esperando respuesta … 200 OK Longitud: sin especificar [text/html]
Guardando en: ‘STDOUT’
[ <=> ] 937 –.- KB / s en 0s 2021-02-16 11:55:47 (11,8 MB / s) – escrito en stdout [937]
% Total% recibido% Xferd Velocidad promedio Tiempo Tiempo Tiempo Descarga actual Carga Total gastado Velocidad izquierda 100 204k 100 204k 0 0 3350k 0 -: -: – -: -: – -: -: – 3350k
[Tue 16 Feb 2021 11:55:47 AM UTC] Instalación desde archivo en línea.
[Tue 16 Feb 2021 11:55:47 AM UTC] Descargando https://github.com/acmesh-official/acme.sh/archive/master.tar.gz
[Tue 16 Feb 2021 11:55:47 AM UTC] Extrayendo master.tar.gz
[Tue 16 Feb 2021 11:55:47 AM UTC] Se recomienda instalar primero socat.
[Tue 16 Feb 2021 11:55:47 AM UTC] Usamos socat para servidor autónomo si usa el modo autónomo.
[Tue 16 Feb 2021 11:55:47 AM UTC] Si no usa el modo independiente, simplemente ignore esta advertencia.
[Tue 16 Feb 2021 11:55:47 AM UTC] Instalación en /home/shola/.acme.sh
[Tue 16 Feb 2021 11:55:47 AM UTC] Instalado en /home/shola/.acme.sh/acme.sh
[Tue 16 Feb 2021 12:05:54 PM UTC] Instalación de alias en ‘/home/shola/.bashrc’
[Tue 16 Feb 2021 12:05:54 PM UTC] De acuerdo, cierre y vuelva a abrir su terminal para comenzar a usar acme.sh
[Tue 16 Feb 2021 11:55:47 AM UTC] Instalación del trabajo cron 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] Bien, bash se encuentra, así que cambie el shebang para usar bash como se prefiera.
[Tue 16 Feb 2021 11:55:48 AM UTC] OK
[Tue 16 Feb 2021 11:55:48 AM UTC] ¡Instale el éxito!

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!“mensaje, puede close la ventana del terminal y ábrala de nuevo 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 –versión

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 tudominio.com -w /var/www/tudominio.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 subomain.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.

PS 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 “servicio 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.

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

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

escucha [::]: 443 ssl ipv6only = activado;
escuchar 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

Save cambios y close el archivo.

Reinicie NGINX con:

PS sudo systemctl reiniciar 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 tudominio.com –force

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

$ acme.sh –remove -d tudominio.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.