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