Para habilitar la comunicación segura (es decir, HTTPS) en su servidor web NGINX, debe obtener un certificado SSL / TLS de una autoridad certificadora de confianza. Vamos a cifrar es una autoridad certificadora sin fines de lucro que ofrece certificados SSL / TLS gratuitos.
Este tutorial describe cómo configurar un certificado SSL / TLS gratuito emitido por Let’s Encrypt en Ubuntu 20.04 Servidor LTS en ejecución Nginx.
Requisitos previos:
- Servidor Ubuntu 20.04 instalado con Nginx y sitio web alojado
Instalar Certbot en Ubuntu
Certbot es una herramienta de código abierto que simplifica y automatiza el proceso de obtención y renovación de certificados de Let’s Encrypt. Vamos a instalar Certbot utilizando el sistema de implementación Snap. Snap está preinstalado en Ubuntu 20.04.
Actualizar snapd
Ejecute los siguientes comandos para actualizar snapd.
$ sudo snap install core
$ sudo snap refresh core
Instalar certbot snap
A continuación, estamos listos para instalar el complemento Certbot.
Nota: Si ya instaló Certbot mediante el comando apt estándar, ejecute primero el siguiente comando para eliminarlo. Esto asegurará que el complemento Certbot funcione correctamente.
$ sudo apt-get remove certbot
$ sudo snap install --classic certbot
certbot 1.11.0 from Certbot Project (certbot-eff✓) installed
Habilitar el comando certbot
Después de instalar con éxito el complemento Certbot, ejecute el siguiente comando para habilitar certbot para usar.
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Obtenga su certificado
Cuando ejecute el comando a continuación, certbot lo guiará a través del resto del proceso. Certbot también actualiza su configuración NGINX automáticamente para activar HTTPS.
$ sudo certbot --nginx
A continuación se muestra un resumen de lo que certbot le pedirá que haga durante este proceso.
- Proporcione una dirección de correo electrónico a la que se enviarán los avisos de renovación y seguridad.
- Enter y aceptar los términos de servicio
- Enter y o norte aceptar o negarse a compartir su dirección de correo electrónico con los desarrolladores de Certbot
- Confirme los nombres de dominio para los que le gustaría habilitar HTTPS
Producción:
Guardando el registro de depuración en /var/log/letsencrypt/letsencrypt.log Complementos seleccionados: Authenticator nginx, Installer nginx
Enter dirección de correo electrónico (utilizada para renovaciones urgentes y avisos de seguridad) (Enter ‘c’ para cancelar): [email protected] – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – Lea los Términos de servicio en https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. Debe estar de acuerdo para registrarse en el servidor ACME. ¿Estás de acuerdo? – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – (Sí No: y – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – ¿Estaría dispuesto, una vez que obtenga su primer certificado se emite con éxito, para compartir su dirección de correo electrónico con Electronic Frontier Foundation, un socio fundador del proyecto Let’s Encrypt y la organización sin fines de lucro que desarrolla Certbot? Nos gustaría enviarle un correo electrónico sobre nuestro trabajo de cifrado de la web, noticias de EFF, campañas y formas de apoyar la libertad digital. – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – (Sí No: n Cuenta registrada. ¿Para qué nombres le gustaría activar HTTPS? – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – 1: dominio1.com 2: www.dominio1 .com – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – Seleccione los números apropiados separados por comas y / o espacios, o deje la entrada en blanco para seleccionar todas las opciones mostradas (Enter ‘c’ para cancelar): Solicitud de un certificado para dominio1.com y www.dominio1.com Realización de los siguientes desafíos: http-01 desafío para dominio1.com http-01 desafío para www.domain1.com Esperando verificación … Limpieza Desafíos Implementar certificado en VirtualHost / etc / nginx / sites-enabled / domain1 Implementar certificado en VirtualHost / etc / nginx / sites-enabled / domain1 Redirigir todo el tráfico en el puerto 80 a ssl en / etc / nginx / sites-enabled / domain1 Redirigir todo el tráfico en el puerto 80 a SSL en / etc / nginx / sites-enabled / domain1 – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – ¡Felicidades! Ha habilitado correctamente https://domain1.com y https://www.domain1.com – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – NOTAS IMPORTANTES: – ¡Felicitaciones! Su certificado y cadena se han guardado en: /etc/letsencrypt/live/domain1.com/fullchain.pem Su archivo de claves se ha guardado en: /etc/letsencrypt/live/domain1.com/privkey.pem Su certificado vencerá el 2021-04-10. Para obtener una versión nueva o modificada de este certificado en el futuro, simplemente ejecute certbot nuevamente con la opción “certonly”. Para renovar * todos * sus certificados de forma no interactiva, ejecute “certbot renew”. Si le gusta Certbot, considere apoyar nuestro trabajo mediante: Donaciones a ISRG / Let’s Encrypt: https://letsencrypt.org/donate Donaciones a EFF: https://eff.org/donate-le
Cerbot agregará las siguientes entradas (oraciones que se muestran administradas por Certbot) en el archivo de bloque nginx.
/ etc / nginx / sites-enabled / domain1
$ cat /etc/nginx/sites-enabled/domain1
# Virtual Host configuration for example.com
#
# You can move that to a different file under sites-available/ and symlink that
# to sites-enabled/ to enable it.
#
server {
server_name domain1.com www.domain1.com;
root /var/www/domain1.com;
index index.html;
location / {
try_files $uri $uri/ =404;
}
listen [::]:443 ssl ipv6only=on; # managed by Certbot
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/domain1.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/domain1.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
if ($host = www.domain1.com) {
return 301 https://$host$request_uri;
} # managed by Certbot
if ($host = domain1.com) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80;
listen [::]:80;
server_name domain1.com www.domain1.com;
return 404; # managed by Certbot
}
$
Navegue por su sitio web para confirmar que ahora se muestra el icono de candado.
Proceso de renovación de certificados
Los certificados emitidos por Let’s Encrypt tienen una validez de 90 días. Durante la instalación, certbot crea una tarea programada para renovar automáticamente sus certificados antes de que caduquen. Mientras no cambie la configuración de su servidor web, no tendrá que ejecutar certbot nuevamente.
Ejecute el siguiente comando para probar el proceso de renovación automática.
$ sudo certbot renew --dry-run
Conclusión
En esta guía, aprendimos cómo configurar vamos a cifrar el certificado SSL en el servidor web NGINX que se ejecuta en Ubuntu 20.04.
En lugar de Cerbot, también puede utilizar CUMBRE Script de shell para emitir y renovar automáticamente los certificados gratuitos de Let’s Encrypt.
Si algo no está claro, háganoslo saber en la sección de comentarios a continuación.