

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Habilite HTTPS en su instancia de Nginx con Let's Encrypt y Certbot
<a name="amazon-lightsail-using-lets-encrypt-certificates-with-nginx"></a>

Amazon Lightsail facilita la protección de sus sitios web y aplicaciones mediante el uso de los balanceadores de carga de Lightsail. SSL/TLS Sin embargo, el uso de un balanceador de cargas de Lightsail no suele ser la opción correcta. Quizás su sitio no necesita la escalabilidad o la tolerancia a errores que proporcionan los balanceadores de carga, o quizás necesita optimizar costos.

En este último caso, puede considerar el uso de Let's Encrypt para obtener un certificado SSL gratuito. Si es así, no hay ningún problema. Puede integrar esos certificados con las instancias de Lightsail. En este tutorial se muestra cómo solicitar un certificado comodín de Let's Encrypt con Certbot e integrarlo con su instancia de Nginx.

 **Contenido** 
+  [Paso 1: Complete los requisitos previos ](#complete-the-prerequisites) 
+  [Paso 2: Instale Certbot en su instancia de Lightsail ](#install-certbot-on-your-instance) 
+  [Paso 3: Solicita un certificado comodín SSL de Let's Encrypt ](#request-a-lets-encrypt-certificate) 
+  [Paso 4: Añade registros TXT a la zona DNS de tu dominio ](#add-a-text-record-to-your-domains-dns-zone-lets-encrypt) 
+  [Paso 5: Confirma que los registros TXT se han propagado ](#confirm-the-text-records-have-propagated-lets-encrypt) 
+  [Paso 6: Complete la solicitud de certificado SSL de Let's Encrypt ](#complete-the-lets-encrypt-certificate-request) 
+  [Paso 7: Actualiza la configuración de SSL en Nginx y redirige el tráfico de HTTP a HTTPS ](#update-ssl-configuration) 
+  [Paso 8: Renueva los certificados de Let's Encrypt cada 90 días ](#renew-a-lets-encrypt-certificate) 

## Paso 1: completar los requisitos previos
<a name="complete-the-prerequisites"></a>

Complete los siguientes requisitos previos si aún no lo ha hecho:
+  Crea una instancia de Nginx en Lightsail. Para obtener más información, consulte [ Crear una instancia. ](how-to-create-amazon-lightsail-instance-virtual-private-server-vps.md) 
+  Registre un nombre de dominio y obtenga acceso administrativo para editar sus registros de DNS. Para obtener más información, consulte [DNS](understanding-dns-in-amazon-lightsail.md). 
**nota**  
 Le recomendamos que administre los registros DNS de su dominio mediante una zona DNS de Lightsail. Para obtener más información, consulte [ Crear una zona DNS para administrar los registros DNS de su dominio. ](lightsail-how-to-create-dns-entry.md) 
+  Utilice el terminal SSH basado en el navegador de la consola de Lightsail para realizar los pasos de este tutorial. Sin embargo, también puede utilizar su propio cliente SSH, como PuTTY. Para obtener más información sobre la configuración de PuTTY, consulte [ Descargar y configurar PuTTY para que se conecte mediante SSH en Amazon Lightsail. ](lightsail-how-to-set-up-putty-to-connect-using-ssh.md) 

## Paso 2: Instale Certbot en su instancia de Lightsail
<a name="install-certbot-on-your-instance"></a>

Certbot es un cliente que se utiliza para solicitar un certificado a Let's Encrypt e implementarlo en un servidor web. Let's Encrypt usa el protocolo ACME para emitir certificados, y Certbot es un ACME-enabled cliente que interactúa con Let's Encrypt.

**Para instalar Certbot en su instancia de Lightsail**

1. Inicie sesión en la consola de Lightsail. [https://lightsail.aws.amazon.com/](https://lightsail.aws.amazon.com/)

1. En la pestaña Instancias de la página de inicio de Lightsail, elija el icono de conexión rápida por SSH para la instancia a la que quiera conectarse.  
![Conexión rápida mediante SSH en la página de inicio de Lightsail.](https://docs.aws.amazon.com/es_es/lightsail/latest/userguide/images/instances/resource_cards/ssh-quick-connect.png)

1. Una vez que se haya conectado la sesión SSH basada en el navegador de Lightsail, introduzca el siguiente comando para actualizar los paquetes de su instancia:

   ```
   sudo apt-get update
   ```

1. Ingrese el siguiente comando para instalar el paquete de propiedades del software: Los desarrolladores de Certbot utilizan un archivo de paquetes personales (PPA) para distribuir Certbot. El paquete de propiedades de software hace que sea más eficaz trabajar con PPA.

   ```
   sudo apt-get install software-properties-common -y
   ```
**nota**  
Si se `Could not get lock` produce un error al ejecutar el `sudo apt-get install` comando, espere unos 15 minutos e inténtelo de nuevo. Este error puede deberse a un trabajo cron que utiliza la herramienta de administración de paquetes de Apt para instalar actualizaciones desatendidas.

1. Ingrese el siguiente comando para actualizar apt para que incluya el nuevo repositorio:

   ```
   sudo apt-get update -y
   ```

1. Ingrese el siguiente comando para instalar Certbot:

   ```
   sudo apt-get install certbot -y
   ```

   Certbot ya está instalado en su instancia de Lightsail.

## Paso 3: Solicitar un certificado comodín de SSL de Let's Encrypt
<a name="request-a-lets-encrypt-certificate"></a>

Comience el proceso de solicitud de un certificado de Let's Encrypt. Con Certbot, solicite un certificado comodín que le permita utilizar un solo certificado para un dominio y sus subdominios. Por ejemplo, un único certificado comodín funciona para el dominio de nivel superior `example.com` y los subdominios `blog.example.com` y `stuff.example.com`.

**Para solicitar un certificado comodín SSL de Let's Encrypt**

1. En la misma ventana de terminal SSH basada en el navegador que se usó en el paso anterior de este tutorial, ingresa los siguientes comandos para configurar una variable de entorno para tu dominio. Asegúrese de sustituir {{domain}} por el nombre de dominio registrado.

   ```
   DOMAIN={{domain}}
   WILDCARD=*.$DOMAIN
   ```

   Ejemplo:

   ```
   DOMAIN=example.com
   WILDCARD=*.$DOMAIN
   ```

1. Ingrese el siguiente comando para confirmar que las variables devuelven los valores correctos:

   ```
   echo $DOMAIN && echo $WILDCARD
   ```

   Debería ver un resultado similar al siguiente:  
![Confirme las variables de entorno del dominio.](https://docs.aws.amazon.com/es_es/lightsail/latest/userguide/images/instances/lets-encrypt/confirm-domain-and-wildcard-variables.png)

1. Ingrese el siguiente comando para iniciar Certbot en modo interactivo. Este comando le indica a Certbot que use un método de autorización manual con desafíos de DNS para verificar la propiedad del dominio. Solicita un certificado comodín para su dominio de nivel superior, así como sus subdominios.

   ```
   sudo certbot -d $DOMAIN -d $WILDCARD --manual --preferred-challenges dns certonly
   ```

1. Introduce tu dirección de correo electrónico cuando se te pida, ya que se utiliza para los avisos de renovación y seguridad.

1. Lee las condiciones de servicio de Let's Encrypt. Cuando hayas terminado, presiona Y si estás de acuerdo. Si no estás de acuerdo, no podrás obtener un certificado de Let's Encrypt.

1. Responda en consecuencia a la pregunta para compartir su dirección de correo electrónico y a la advertencia sobre el registro de la dirección IP.

1. Let's Encrypt ahora le pide que verifique que es el propietario del dominio especificado. Para ello, se añaden registros TXT para los registros de DNS del dominio. Se proporciona un conjunto de valores de registro TXT, tal y como se muestra en el siguiente ejemplo:
**nota**  
Let's Encrypt puede proporcionar uno o varios registros TXT que debe utilizar para la verificación. En este ejemplo, se nos proporcionaron dos registros TXT para utilizarlos para la verificación.  
![Registros TXT para certificados de Let's Encrypt.](https://docs.aws.amazon.com/es_es/lightsail/latest/userguide/images/instances/lets-encrypt/get-TXT-records.png)

## Paso 4: agregar registros TXT a la zona de DNS del dominio
<a name="add-a-text-record-to-your-domains-dns-zone-lets-encrypt"></a>

 Al añadir un registro TXT a la zona DNS de su dominio se verifica que usted es el propietario del dominio. Con fines de demostración, utilizamos la zona DNS de Lightsail. Sin embargo, los pasos podrían ser similares para otras zonas DNS normalmente alojadas por registradores de dominio. 

**nota**  
 Para obtener más información sobre cómo crear una zona DNS de Lightsail para su dominio, consulte [ Crear una zona DNS para administrar los registros DNS de su dominio en Lightsail. ](lightsail-how-to-create-dns-entry.md) 

**Para añadir registros TXT a la zona DNS de su dominio en Lightsail**

1. En el panel de navegación izquierdo, seleccione **Dominios y DNS**.

1.  En la sección **Zonas DNS** de la página, elija la Zona DNS del dominio que ha especificado en la solicitud de certificado de Certbot. 

1. En el editor de zona DNS, elija **DNS records** (Registros de DNS).

1. Elija **Añadir registro**.

1.  En el menú desplegable **Record type** (Tipo de registro), elija **TXT record** (Registro TXT). 

1.  Ingrese los valores especificados en la solicitud de certificado de Let's Encrypt en los campos **Record name** (Nombre de registro y **Responds with** (Responde con). 
**nota**  
 La consola de Lightsail rellena automáticamente la parte APEX del dominio. Por ejemplo, si desea agregar el subdominio `{{_acme-challenge.example.com}}`, entonces solo tiene que introducir `{{_acme-challenge}}` en el cuadro de texto, y Lightsail agrega la parte `.example.com` en su lugar cuando guarda el registro. 

1. Seleccione **Save**.

1.  Repita los pasos 4 a 7 para añadir el segundo conjunto de registros TXT especificado por la solicitud de certificado de Let's Encrypt. 

1.  Mantenga abierta la ventana del navegador de la consola de Lightsail; podrá volver a ella más adelante en este tutorial. Continúe con la [ siguiente sección ](#confirm-the-text-records-have-propagated-lets-encrypt) de este tutorial. 

## Paso 5: Confirmar que los registros TXT se han propagado
<a name="confirm-the-text-records-have-propagated-lets-encrypt"></a>

 Utilice la MxToolbox utilidad para confirmar que los registros TXT se han propagado al DNS de Internet. La propagación de registros de DNS puede tardar un tiempo en función de su proveedor de alojamiento de DNS y el tiempo de vida (TTL) configurado para los registros de DNS. Es importante que realice este paso y que confirme que sus registros TXT se han propagado antes de continuar con la solicitud de certificado de Certbot. De lo contrario, se produce un error al solicitar el certificado. 

**Para confirmar que los registros TXT se han propagado en el DNS de Internet**

1.  Abra una nueva ventana del navegador y vaya a [ https://mxtoolbox.com/TXTLookup.aspx](https://mxtoolbox.com/TXTLookup.aspx). 

1.  Ingrese el siguiente texto en el cuadro de texto. Asegúrese de sustituir `{{domain}}` por su dominio. 

   ```
   _acme-challenge.{{domain}}
   ```

   Ejemplo:

   ```
   _acme-challenge.{{example.com}}
   ```  
![MxToolbox Búsqueda de registros TXT.](https://docs.aws.amazon.com/es_es/lightsail/latest/userguide/images/instances/lets-encrypt/mxtoolbox-text-record-lookup.png)

1. Elija **TXT Lookup (Búsqueda de TXT)** para realizar la comprobación.

1. Se obtiene una de las siguientes respuestas:
   +  Si sus registros de TXT se han propagado al DNS de Internet, verá una respuesta similar a la que se muestra en la siguiente captura de pantalla. Cierre la ventana del navegador y continúe en la [siguiente sección](#complete-the-lets-encrypt-certificate-request) de este tutorial.   
![Confirmación de que los registros de TXT se han propagado.](https://docs.aws.amazon.com/es_es/lightsail/latest/userguide/images/instances/lets-encrypt/mxtoolbox-propagated-text-record-lookup.png)
   +  Si su registros TXT no se han propagado al DNS de Internet, verá la respuesta **DNS Record not found (Registro de DNS no encontrado)**. Confirme que ha añadido los registros de DNS correctos a la zona DNS de su dominio. Si ha añadido los registros correctos, espere un poco más a que los registros de DNS de su dominio se propaguen y ejecute de nuevo la búsqueda de TXT. 

## Paso 6: Finalizar la solicitud del certificado de SSL de Let's Encrypt
<a name="complete-the-lets-encrypt-certificate-request"></a>

 Vuelva a la sesión SSH de su instancia basada en el navegador Lightsail y complete la solicitud de certificado de Let's Encrypt. Certbot guarda los archivos del certificado, la cadena y la clave SSL en un directorio específico de la instancia.

**Para finalizar la solicitud de certificado SSL de Let’s Encrypt**

1.  En la sesión SSH basada en el navegador Lightsail de su instancia, pulse ** Entrar para continuar con la solicitud del certificado SSL de ** Let's Encrypt. Si se realiza correctamente, aparece una respuesta similar a la que se muestra en la siguiente captura de pantalla:   
![La solicitud de certificado de Let's Encrypt se ha realizado correctamente.](https://docs.aws.amazon.com/es_es/lightsail/latest/userguide/images/instances/lets-encrypt/certificate-request-success.png)

    El mensaje confirma que sus archivos de certificado, de cadena y de clave están almacenados en el directorio `/etc/letsencrypt/live/{{domain}}/`. Asegúrese de sustituir `{{domain}}` por su dominio, como `/etc/letsencrypt/live/{{example.com}}/`. 

1.  Anote la fecha de vencimiento especificada en el mensaje. Puede utilizarla para renovar su certificado en dicha fecha.   
![Fecha de renovación del certificado de Let's Encrypt.](https://docs.aws.amazon.com/es_es/lightsail/latest/userguide/images/instances/lets-encrypt/certificate-renewal-date.png)

## Paso 7: Actualiza la configuración de SSL en Nginx y redirige el tráfico de HTTP a HTTPS
<a name="update-ssl-configuration"></a>

**Para actualizar la configuración de SSL en el archivo default.conf de Nginx**

1.  En la sesión de SSH de tu instancia de Nginx, introduce el siguiente comando para detener los servicios subyacentes: 

   ```
   sudo systemctl stop nginx
   sudo systemctl stop mariadb
   sudo systemctl stop php8.2-fpm
   ```

   Verá una respuesta parecida a la siguiente:  
![Los servicios de instancia de Nginx se detuvieron.](https://docs.aws.amazon.com/es_es/lightsail/latest/userguide/images/instances/lets-encrypt/nginx-stop-services.png)

1.  Ingrese el siguiente comando para definir una variable de entorno para su dominio. Puede copiar y pegar comandos de un modo más eficiente para crear enlaces a los archivos de certificados. Asegúrese de sustituir `{{domain}}` por el nombre de dominio registrado. 

   ```
   DOMAIN={{domain}}
   ```

   Ejemplo:

   ```
   DOMAIN={{example.com}}
   ```

1. Ingrese el siguiente comando para confirmar que las variables devuelven los valores correctos:

   ```
   echo $DOMAIN
   ```

   Debería ver un resultado similar al siguiente:  
![Confirme la variable de entorno del dominio.](https://docs.aws.amazon.com/es_es/lightsail/latest/userguide/images/instances/lets-encrypt/confirm-domain-variable.png)

1. Ejecuta el siguiente comando para cambiar la configuración de SSL:
**nota**  
Si has cerrado la ventana de tu terminal SSH basada en el navegador desde que configuraste la `DOMAIN` variable en el paso 3, `DOMAIN={{example.com}}` vuelve a ejecutarla y {{example.com}} sustitúyala por tu dominio.

   ```
   sudo sed \
   -i -e "s|ssl_certificate /etc/ssl/certs/ssl-cert-snakeoil.pem|ssl_certificate /etc/letsencrypt/live/$DOMAIN/fullchain.pem|g" \
   -i -e "s|ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key|ssl_certificate_key /etc/letsencrypt/live/$DOMAIN/privkey.pem|g" \
   /etc/nginx/conf.d/default.conf
   ```

1.  Tras sobrescribir el `default.conf` archivo, ejecuta los siguientes comandos para comprobar la configuración y reiniciar Nginx

   ```
   sudo nginx -t
   sudo systemctl restart nginx
   sudo systemctl restart mariadb
   sudo systemctl restart php8.2-fpm
   ```

   Debería ver un resultado similar al siguiente:  
![Se iniciaron los servicios de instancia de Nginx.](https://docs.aws.amazon.com/es_es/lightsail/latest/userguide/images/instances/lets-encrypt/nginx-start-services.png)

    Tu instancia de Nginx ahora está configurada para usar el cifrado SSL y el tráfico se redirige de HTTP a HTTPS 

## Paso 8: Renueva los certificados de Let's Encrypt cada 90 días
<a name="renew-a-lets-encrypt-certificate"></a>

 Los certificados de Let's Encrypt son válidos durante 90 días. Los certificados se pueden renovar 30 días antes de que caduquen. Para renovar el certificado Let's Encrypt, repita el [ paso 3: solicite un certificado comodín SSL de Let's Encrypt. ](#request-a-lets-encrypt-certificate) 