En este tutorial, explicaremos cómo instalar un certificado Let's Encrypt SSL gratuito en un VPS CentOS 8 con Nginx como servidor web.
Let's Encrypt es una autoridad de certificación gratuita, de código abierto y sin fines de lucro que proporciona certificados SSL gratuitos para que los sitios web habiliten el cifrado TLS. Fue desarrollado por el Grupo de Investigación de Seguridad de Internet (ISRG) y cuenta con la confianza de todos los principales navegadores. Se utiliza para automatizar el proceso de creación, validación, firma, implementación y renovación de certificados para sitios web seguros.
El objetivo principal de Let's Encrypt es promover el uso de SSL en la web y hacer conexiones encriptadas en Internet, manteniendo a todos más seguros en el proceso. El certificado es válido solo por 90 días, por lo que deberá renovarlo manualmente o configurar el sistema de renovación automática, que debe estar habilitado de forma predeterminada.
Actualmente, Let's encrypt admite la emisión de certificación automatizada para Apache, Nginx, Plex y HAproxy, lo que debería cubrir el caso de uso de casi todos. Comencemos con nuestra guía de instalación.
Requisitos
- Para el propósito de este tutorial, usaremos un CentOS 8 VPS.
- También se requiere acceso completo a la raíz SSH o un usuario con privilegios sudo. Todos nuestros VPS vienen con acceso raíz incluido de manera predeterminada sin costo adicional.
- Un nombre de dominio válido apunta a su dirección IP de VPS.
Paso 1:Iniciar sesión y actualizar paquetes
Primero, necesitaremos iniciar sesión en nuestro servidor usando SSH. Puede hacerlo ingresando este comando:
ssh root@IP_Address -p Port_Number
Recuerde reemplazar "root" con su nombre de usuario si no está utilizando el usuario root. Cambie "IP_Address" y "Port_Number" según la dirección IP de su servidor y el número de puerto SSH. El número de puerto SSH predeterminado es 22.
Una vez que haya iniciado sesión, debe actualizar todos sus paquetes a sus últimas versiones disponibles.
dnf update -y
Una vez que se completen las actualizaciones, reinicie su sistema para aplicar los cambios.
Paso 2:Instalar Nginx y PHP
Primero, instale el servidor web Nginx y PHP ejecutando el siguiente comando:
dnf install nginx php php-fpm php-cli -y
Una vez que todos los paquetes estén instalados, inicie los servicios Nginx y PHP-FPM y habilítelos para que se inicien en el arranque con el siguiente comando:
systemctl start nginx systemctl enable nginx systemctl start php-fpm systemctl enable php-fpm
Paso 3:Configurar PHP-FPM
De forma predeterminada, PHP-FPM está configurado para ejecutarse como usuario y grupo de Apache. En este tutorial, utilizaremos el servidor web Nginx. Esto significa que deberá configurar PHP-FPM para que se ejecute como usuario y grupo de Nginx.
Para hacerlo, edite el archivo de configuración de PHP-FPM:
nano /etc/php-fpm.d/www.conf
Cambie el valor de usuario y grupo de apache
a nginx
, como se muestra a continuación:
user = nginx group = nginx
Guarde y cierre el archivo cuando haya terminado. Luego, reinicie el servicio PHP-FPM para aplicar los cambios:
systemctl restart php-fpm
Paso 4:Cree un host virtual Nginx
Antes de comenzar, cree un sitio web de muestra para Nginx.
mkdir /var/www/html/yourdomain.com
A continuación, cree un archivo PHP de muestra dentro del directorio del sitio web y ábralo con su editor de texto preferido:
nano /var/www/html/yourdomain.com/index.php
Agregue las siguientes líneas al archivo:
<?php phpinfo(); ?>
Guarde y cierre el archivo, luego establezca la propiedad de su sitio web en nginx
con el siguiente comando:
chown -R nginx:nginx /var/www/html/yourdomain.com/
A continuación, cree un nuevo archivo de configuración de host virtual de Nginx que sirva a su sitio web:
nano /etc/nginx/conf.d/yourdomain.com.conf
Agregue las siguientes líneas:
server { server_name yourdomain.com; root /var/www/html/yourdomain.com; location / { index index.php; } access_log /var/log/nginx/yourdomain.access.log; error_log /var/log/nginx/yourdomain.error.log; location ~ \.php$ { fastcgi_pass unix:/run/php-fpm/www.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include /etc/nginx/fastcgi_params; } }
Asegúrate de reemplazar todas las instancias de yourdomain
con su nombre de dominio registrado.
Guarde y cierre el archivo, luego revise el archivo de configuración de Nginx para ver si hay errores de sintaxis con el siguiente comando:
nginx -t
Debería ver el siguiente resultado:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
A continuación, reinicie el servicio Nginx para aplicar los cambios de configuración:
systemctl restart nginx
Su servidor web ahora debería estar en funcionamiento.
Paso 5:Instale el cliente de Certbot
Para generar un certificado Let's Encrypt para su sitio web, deberá instalar el cliente Certbot en su sistema.
Certbot es una herramienta de línea de comandos que se utiliza para simplificar el proceso de obtención y renovación de certificados SSL de Let's Encrypt para su sitio web.
De forma predeterminada, el paquete Certbot no está disponible en el repositorio estándar de CentOS. Por lo tanto, deberá descargarlo del sitio web del proveedor.
Puede descargarlo e instalarlo con el siguiente comando:
wget https://dl.eff.org/certbot-auto mv certbot-auto /usr/local/bin/certbot-auto chmod 0755 /usr/local/bin/certbot-auto
Una vez que se haya instalado Certbot, ejecute el siguiente comando para obtener e instalar un certificado SSL para su sitio web:
certbot-auto --nginx -d yourdomain.com
El comando anterior instalará primero todas las dependencias requeridas en su servidor. Una vez instalado, se le pedirá que proporcione una dirección de correo electrónico y acepte los términos del servicio, como se muestra a continuación:
Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator nginx, Installer nginx Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): [email protected] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must agree in order to register with the ACME server at https://acme-v02.api.letsencrypt.org/directory - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (A)gree/(C)ancel: A - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Would you be willing to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about our work encrypting the web, EFF news, campaigns, and ways to support digital freedom. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (Y)es/(N)o: N
Escriba N si no desea compartir su correo electrónico con la EFF, luego presione Enter para continuar. Una vez que se haya instalado el certificado, debería ver el siguiente resultado:
Obtaining a new certificate Performing the following challenges: http-01 challenge for yourdomain.com Waiting for verification... Cleaning up challenges Deploying Certificate to VirtualHost /etc/nginx/conf.d/yourdomain.com.conf Redirecting all traffic on port 80 to ssl in /etc/nginx/conf.d/yourdomain.com.conf - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Congratulations! You have successfully enabled https://yourdomain.com You should test your configuration at: https://www.ssllabs.com/ssltest/analyze.html?d=yourdomain.com - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/yourdomain.com/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/yourdomain.com/privkey.pem Your cert will expire on 2020-08-30. To obtain a new or tweaked version of this certificate in the future, simply run certbot-auto again with the "certonly" option. To non-interactively renew *all* of your certificates, run "certbot-auto renew" - Your account credentials have been saved in your Certbot configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal. - 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 - We were unable to subscribe you the EFF mailing list because your e-mail address appears to be invalid. You can try again later by visiting https://act.eff.org.
Ahora, su sitio web está protegido con Let's Encrypt SSL. Puede probar su certificado SSL utilizando una herramienta en línea.
Paso 6:Acceda a su sitio web
Ahora, abra su navegador web y acceda a su sitio web de forma segura utilizando la URL https://yourdomain.com
.
Debería ver la siguiente página:
En la página anterior, debería poder ver que el sitio está correctamente protegido, generalmente con un ícono de candado verde en el borde izquierdo de la barra de direcciones.
Paso 7:configurar la renovación automática
Ahora que hemos instalado Let's Encrypt en nuestro CentOS 8 VPS, debemos asegurarnos de que nuestro certificado permanezca renovado y válido.
De forma predeterminada, los certificados de Let's Encrypt tienen una validez de 90 días. Se recomienda renovar el certificado antes de que caduque, ya que un certificado caducado dará a los usuarios una advertencia de seguridad cuando intenten visitar su sitio web.
Puede probar el proceso de renovación manualmente con el siguiente comando.
certbot-auto renew --dry-run
El comando anterior verificará automáticamente los certificados actualmente instalados e intentará renovarlos si faltan menos de 30 días para la fecha de vencimiento.
También puede agregar un cronjob para ejecutar automáticamente el comando anterior dos veces al día.
Para hacerlo, edite el archivo crontab con el siguiente comando:
crontab -e
Agregue la siguiente línea:
* */12 * * * root /usr/local/bin/certbot-auto renew >/dev/null 2>&1
Siempre puede cambiar el intervalo de este cronjob si dos veces al día es demasiado frecuente ajustando los valores en el extremo izquierdo.
Guarde y cierre el archivo. Ahora su certificado se renovará regularmente. ¡Felicidades! Ya ha instalado Let's Encrypt en su servidor CentOS 8 con Nginx.
Configurar un sitio web con todos los complementos y funciones que necesita puede llevar mucho tiempo y esfuerzo que podría gastar en administrar su negocio. Si usa uno de nuestros servicios de hospedaje CentOS 8 administrados, haremos todo el trabajo duro por usted. Desde el mantenimiento del servidor hasta las solicitudes de instalación y configuración, cubrimos todo lo que necesita para mantener su servidor en plena forma, todo sin costo adicional.