Cómo Instalar y Renovar Certificados Let’s Encrypt en un Servidor de Alibaba Cloud
- 874Palabras
- 4Minutos
- 09 Jul, 2024
Let’s Encrypt es una autoridad certificadora (CA) gratuita, automatizada y abierta, cuyo objetivo es mejorar la seguridad de Internet proporcionando certificados SSL/TLS gratuitos. Este artículo explica en detalle cómo instalar certificados Let’s Encrypt en un servidor de Alibaba Cloud y cómo usar la herramienta Certbot para la renovación automática de certificados.
Preparación Antes de la Instalación
Antes de comenzar a instalar los certificados Let’s Encrypt, asegúrate de que tu servidor ya tenga instalado Nginx y que tu dominio esté apuntando a la dirección IP del servidor. Si tu servidor usa el sistema Alibaba Cloud Linux, puedes instalar Nginx con los siguientes comandos:
1sudo yum install nginx -y2sudo systemctl start nginx3sudo systemctl enable nginx
Instalación de Certbot
Certbot es una herramienta cliente automatizada desarrollada por EFF, utilizada para obtener e instalar certificados de Let’s Encrypt. Necesitamos usar el comando yum para instalar Certbot y sus componentes relacionados.
- Agregar el repositorio EPEL:
1sudo yum install epel-release -y2
3# Si el comando anterior da error, primero elimina epel-aliyuncs-release y vuelve a instalar epel-release4sudo yum remove epel-aliyuncs-release -y5sudo yum install epel-release -y
- Instalar Certbot y el plugin de Nginx:
1sudo yum install certbot python3-certbot-nginx -y
Obtener e Instalar Certificados
Una vez instalado Certbot, puedes usar el siguiente comando para emitir certificados para todos los subdominios, reemplazando example.com con tu dominio real:
1sudo certbot certonly --manual --preferred-challenges dns -d *.example.com -d example.com
Este comando te hará una serie de preguntas y generará un registro TXT que necesitarás añadir a tu servidor DNS, como se muestra en la imagen:
Ve a la sección de DNS en Alibaba Cloud y añade un registro TXT con los valores proporcionados, como se muestra en la siguiente imagen:
Verifica que el registro DNS TXT sea correcto y luego presiona Enter en la terminal:
Una vez completado Certbot, tus archivos de certificado y clave estarán generalmente en el directorio /etc/letsencrypt/live/tu-dominio/
.
Edita el archivo de configuración de Nginx para usar el nuevo certificado SSL, generalmente ubicado en el directorio /etc/nginx/conf.d/.
1sudo vim /etc/nginx/conf.d/www.conf
Añade el siguiente código, reemplazando tu-dominio con tu propio dominio:
1server {2 listen 80;3 server_name tu-dominio.com *.tu-dominio.com;4
5 # Redirigir a HTTPS6 return 301 https://$host$request_uri;7}8
9server {10 listen 443 ssl;11 server_name tu-dominio.com *.tu-dominio.com;12
13 ssl_certificate /etc/letsencrypt/live/tu-dominio.com/fullchain.pem;14 ssl_certificate_key /etc/letsencrypt/live/tu-dominio.com/privkey.pem;15
16 ssl_protocols TLSv1.2 TLSv1.3;17 ssl_ciphers HIGH:!aNULL:!MD5;18
19 # Otras configuraciones de Nginx, como el directorio raíz, archivos de índice, etc.20 root /var/www/html;21 index index.html;22
23 location / {24 try_files $uri $uri/ =404;25 }26}
Recarga Nginx con el siguiente comando:
1sudo systemctl reload nginx
Configurar la Renovación Automática
Los certificados de Let’s Encrypt son válidos por 90 días, por lo que necesitamos configurar la renovación automática para asegurarnos de que los certificados sean siempre válidos. Certbot proporciona una tarea cron que puede verificar y renovar automáticamente los certificados que están por expirar.
Prueba la renovación del certificado con el siguiente comando:
1sudo certbot renew --dry-run
Si encuentras un error, es porque Certbot usa el método de DNS para solicitar certificados, por lo que durante la renovación es necesario actualizar el registro DNS. Podemos usar el script [certbot-dns-aliyun] para llamar automáticamente a la API de Alibaba Cloud y lograr la solicitud y renovación automática de certificados.
Instalar la Herramienta de CLI de Aliyun:
1wget https://aliyuncli.alicdn.com/aliyun-cli-linux-latest-amd64.tgz2tar xzvf aliyun-cli-linux-latest-amd64.tgz3sudo cp aliyun /usr/local/bin4rm -rf aliyun
Configurar el Usuario
Inicia sesión en https://ram.console.aliyun.com/, añade un usuario, habilita el acceso a la llamada OpenAPI y otorga autorización AliyunDNSFullAccess. Registra el AccessKeyID y AccessKeySecret, y en el servidor ejecuta el siguiente código:
1sudo aliyun configure
Sigue las instrucciones e ingresa la información correspondiente:
1Access Key Id []: AccessKeyID2Access Key Secret []: AccessKeySecret3Default Region Id []: cn-beijing4Default Output Format [json]: json (Only support json)5Default Language [zh|en] en: zh
Si tiene éxito, verás:
1Configure Done!!!2..............888888888888888888888 ........=8888888888888888888D=..............3...........88888888888888888888888 ..........D8888888888888888888888I...........4.........,8888888888888ZI: ...........................=Z88D8888888888D..........5.........+88888888 ..........................................88888888D..........6.........+88888888 .......Welcome to use Alibaba Cloud.......O8888888D..........7.........+88888888 ............. ************* ..............O8888888D..........8.........+88888888 .... Command Line Interface(Reloaded) ....O8888888D..........9.........+88888888...........................................88888888D..........10..........D888888888888DO+. ..........................?ND888888888888D..........11...........O8888888888888888888888...........D8888888888888888888888=...........12............ .:D8888888888888888888.........78888888888888888888O ..............
Si hay algún error, verifica si has habilitado el acceso a la llamada OpenAPI y otorgado autorización AliyunDNSFullAccess.
Instalar cerbot-dns-aliyun
1wget https://cdn.jsdelivr.net/gh/justjavac/certbot-dns-aliyun@main/alidns.sh2sudo cp alidns.sh /usr/local/bin3sudo chmod +x /usr/local/bin/alidns.sh4sudo ln -s /usr/local/bin/alidns.sh /usr/local/bin/alidns5rm alidns.sh
Si https://cdn.jsdelivr.net/gh/justjavac/certbot-dns-aliyun@main/alidns.sh
no se puede descargar, descárgalo localmente y súbelo al servidor.
Renovación
1# Prueba de solicitud2certbot certonly -d *.example.com --manual --preferred-challenges dns --manual-auth-hook "alidns" --manual-cleanup-hook "alidns clean" --dry-run3
4# Prueba de renovación5certbot renew --manual --preferred-challenges dns --manual-auth-hook "alidns" --manual-cleanup-hook "alidns clean" --dry-run6
7# Para la solicitud y renovación reales, elimina el parámetro --dry-run
Configurar una Tarea Programada para la Renovación Automática
1crontab -e
Ingresa el siguiente contenido:
10 2 1 */1 * root certbot renew --manual --preferred-challenges dns --manual-auth-hook "alidns" --manual-cleanup-hook "alidns clean" --deploy-hook "nginx -s reload"
Esta tarea se ejecutará el día 1 de cada mes a las 2:00 AM, usando el modo manual para renovar el certificado, y recargará Nginx después de una renovación exitosa para aplicar el nuevo certificado. En Crontab, el formato de la tarea programada consta de cinco asteriscos que representan minutos (0 – 59), horas (0 – 23), días del mes (1 – 31), meses (1 – 12) y días de la semana (0 – 7, donde 0 y 7 ambos representan el domingo).
Conclusión
Este artículo explica en detalle cómo instalar certificados Let’s Encrypt en un servidor, usar la herramienta Certbot para obtener e instalar certificados, y configurar la renovación automática. Con estos pasos, puedes asegurarte de que tu servidor siempre use certificados SSL/TLS válidos, mejorando la seguridad de tu sitio web.