Select Page

Una versión previa de este instructional fue escrito por Hazel Virdó

Introducción

Let’s Encrypt es una Autoridad Certificadora (CA) que provee una manera sencilla de obtener e instalar de manera gratuita certificados TLS/SSL, por lo tanto, habilitaría el HTTPS en servidores internet. Además, simplifica el proceso, ya que provee un device cliente, Certbot, que automatiza los angeles mayoría (si no todos) los pasos requeridos. Actualmente, todo el proceso de los angeles obtención e instalación de un certificado se encuentra completamente automatizada tanto para Apache como para Nginx.

En este instructional, usarás Certbot para obtener un certificado SSL gratuito que podrá ser usado en Nginx, instalado en Ubuntu 18.04 y configurado de tal manera que su renovación se realizará de forma automática.

Este instructional usará un archivo de bloque separado para el servidor Nginx, en vez de utilizar el archivo por defecto. Recomendamos los angeles creación de un archivo de bloque nuevo para cada uno de los dominios, porque ayuda a evitar errores comunes, además de mantener los archivos predeterminados en caso de ser necesitados para una configuración alterna en caso de emergencia.

Prerrequisitos

Para poder completar este instructional, necesitarás contar con lo siguiente:

  • Una instalación del servidor Ubuntu 18.04, ajustada de acuerdo con el instructional de los angeles configuración inicial de servidores para Ubuntu 18.04, incluyendo un cortafuegos y una cuenta que no sea los angeles de superusuario que tenga privilegios sudo.

  • Un nombre de dominio registrado y funcional. Durante este instructional se usará instance.com. Puedes comprar un dominio en Namecheap, obtener uno gratuito en Freenom, o utilizar el proveedor de dominio de tu preferencia.

  • Los angeles configuración de los siguientes dos registros DNS para tu servidor. Puedes seguir los angeles introducción al DNS de DigitalOcean, para obtener detalles y el proceso para adicionarlos:

    • Un registro A con instance.com apuntando a los angeles dirección IP pública de tu servidor.
    • Un registro A con www.instance.com apuntando a los angeles dirección IP pública de tu servidor.
  • Nginx instalado, habiendo seguido nuestra guía: cómo instalar Nginx en Ubuntu 18.04. Debes asegurarte de tener un bloque de servidor para tu dominio. Este instructional usará /and so on/nginx/sites-available/instance.com como ejemplo.

Paso 1 — Instalar Certbot

El primer paso para obtener un certificado SSL mediante Let’s Encrypt, consiste en instalar el device de Certbot en tu servidor.

El desarrollo de Certbot se encuentra muy activo, lo que conlleva que los paquetes proveídos por Ubuntu tiendan a estar desactualizados. Sin embargo, los desarrolladores de Certbot mantienen un repositorio de device para Ubuntu con las versiones actualizadas, es por eso que nosotros usaremos ese repositorio, en cambio de los paquetes predeterminados.

Primero, adiciona el repositorio:

  • sudo add-apt-repository ppa:certbot/certbot

Necesitarás presionar Input para aceptar. Luego, actualiza los angeles lista de paquetes para recolectar los angeles información de los paquetes del nuevo repositorio:

Y finalmente, instala el paquete Nginx de Certbot con el apt:

  • sudo apt set up python-certbot-nginx

Ahora, Certbot está listo para ser usado, pero para configurar el SSL para trabajar con Nginx, necesitamos verificar los angeles configuración de él.

Paso 2 — Confirmar los angeles configuración del Nginx

Certbot necesita estar habilitado para encontrar el bloque de servidor en tu configuración de Nginx, de tal manera que que pueda configurar el SSL de forma automática. Específicamente, lo hace mediante los angeles búsqueda de los angeles directiva server_name que contiene el dominio del cual solicitaste el certificado.

Si seguiste el paso para establecer el bloque de servidor dentro del tutorial de instalación de Nginx, deberías tener un bloque de servidor para tu dominio en /and so on/nginx/sites-available/instance.com con los angeles directiva server_name ya asignada apropiadamente.

Para verificarlo, abre el archivo de bloques de servidor para tu dominio usando nano o tu editor de texto preferido:

  • sudo nano /and so on/nginx/sites-available/instance.com

Busca los angeles línea: server_name, que debería verse semejante a lo siguiente:

/and so on/nginx/sites-available/instance.com

...
server_name instance.com www.instance.com;
...

Si los angeles línea concuerda con lo anterior, sal del archivo y continúa con el siguiente paso.

Si no, actualiza el archivo para que concuerde. Salva el archivo, sal del editor y verifica los angeles sintaxis de los angeles edición que acabas de realizar:

Si se despliega un error, abre de nuevo el archivo y recórrelo en los angeles búsqueda de caracteres faltantes o de errores tipográficos. Tan pronto como los angeles sintaxis de tu archivo de configuración sea los angeles correcta, recarga Nginx para activar los angeles nueva configuración:

  • sudo systemctl reload nginx

Certbot podrá ahora encontrar el bloque de servidor correcto y podrá actualizarlo.

A continuación, actualizaremos el cortafuegos para permitir el tráfico HTTPS.

Paso 3 — Permitir HTTPS a través del cortafuegos

Si se tiene el cortafuegos ufw habilitado, tal como se recomendó en las guías de prerrequisitos, necesitarás ajustar los angeles configuración para permitir el tráfico HTTPS. Afortunadamente, Nginx registra pocos perfiles durante su instalación.

Puedes ver el ajuste exact del cortafuegos al digitar:

Probablemente, los angeles salida se parecerá a algo como lo siguiente, lo cual implicaría que el tráfico HTTP es el único permitido en el servidor internet:

Output

Standing: lively To Motion From -- ------ ---- OpenSSH ALLOW Anyplace Nginx HTTP ALLOW Anyplace OpenSSH (v6) ALLOW Anyplace (v6) Nginx HTTP (v6) ALLOW Anyplace (v6)

Para permitir adicionalmente, el tráfico HTTPS, debes habilitar el perfil completo de Nginx y borrar los perfiles redundantes:

  • sudo ufw permit 'Nginx Complete'
  • sudo ufw delete permit 'Nginx HTTP'

En este momento, el estado debería desplegarse de los angeles siguiente forma:

Output

Standing: lively To Motion From -- ------ ---- OpenSSH ALLOW Anyplace Nginx Complete ALLOW Anyplace OpenSSH (v6) ALLOW Anyplace (v6) Nginx Complete (v6) ALLOW Anyplace (v6)

A continuación, ejecutaremos Certbot para obtener nuestros certificados.

Paso 4 — Obtener el certificado SSL

Certbot provee diferentes maneras para obtener certificados SSL. Al usar el conector a Nginx, éste se encargará de reconfigurarlo, así como también, de recargar los angeles configuración en caso de ser necesario. Para usar este conector, digita lo siguiente:

  • sudo certbot --nginx -d instance.com -d www.instance.com

Esto ejecuta certbot con el conector --nginx, usando -d para especificar los nombres sobre los cuales queremos que el certificado sea válido.

Si ésta es los angeles primera vez que se ejecuta certbot, se te solicitará que ingreses una dirección de correo electrónico y que aceptes los términos de servicio. Al hacerlo, certbot se comunicará con el servidor Let’s Encrypt, para intentar verificar que tú controlas el dominio para el cual se está solicitando el certificado.

En caso de éxito, certbot te preguntará cómo configurar los ajustes para HTTPS:

Output

Please make a selection whether or not or to not redirect HTTP visitors to HTTPS, doing away with HTTP get admission to. ------------------------------------------------------------------------------- 1: No redirect - Make no additional adjustments to the webserver configuration. 2: Redirect - Make all requests redirect to safe HTTPS get admission to. Select this for new websites, or if you are assured your web site works on HTTPS. You'll be able to undo this exchange by means of modifying your internet server's configuration. ------------------------------------------------------------------------------- Make a selection the right quantity [1-2] then [enter] (press 'c' to cancel):

El mensaje anterior te permitirá escoger entre redireccionar o no el tráfico de HTTP a HTTPS, limitando el acceso HTTP; mediante las siguientes opciones:

Output

Por prefer seleccione si desea, o no, redireccionar el tráfico de HTTP a HTTPS, limitando el acceso HTTP. ------------------------------------------------------------------------------- 1: No redireccionar - No se realizarán más cambios a los angeles configuración del servidor internet. 2: Redireccionar - Enviar todas las solicitudes hacia el acceso seguro HTTPS. Seleccione esta opción si su sitio es nuevo o Usted se encuentra seguro que su sitio funcionará en un ambiente HTTPS. Esto se puede deshacer, editando los angeles configuración de su servidor internet. ------------------------------------------------------------------------------- Seleccione el número de su opción: [1-2] después pulse [Enter] (o presione 'c' para cancelar):

Después de seleccionar su opción, pulse Input. Los angeles configuración será actualizada, y Nginx se recargará para activar los nuevos ajustes. certbot concluirá con un mensaje informando que el proceso fue exitoso y los angeles localización de tus certificados:

Output

IMPORTANT NOTES: - Congratulations! Your certificates and chain were stored at: /and so on/letsencrypt/are living/instance.com/fullchain.pem Your key report has been stored at: /and so on/letsencrypt/are living/instance.com/privkey.pem Your cert will expire on 2018-07-23. To procure a brand new or tweaked model of this certificates at some point, merely run certbot once more with the "certonly" possibility. To non-interactively renew *all* of your certificate, run "certbot renew" - Your account credentials were stored to your Certbot configuration listing at /and so on/letsencrypt. You will have to make a safe backup of this folder now. This configuration listing will additionally comprise certificate and personal keys got by means of Certbot so making common backups of this folder is perfect. - In the event you like Certbot, please imagine supporting our paintings by means of: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le

Tus certificados ya deberían haber sido transferidos, instalados y cargados. Intenta recargar tu sitio internet usando el prefijo https:// y observa el indicador de seguridad de tu navegador. Debería indicar que el sitio se encuentra asegurado de manera apropiada, usualmente se indica con el icono de un candado verde. Si pruebas tu sitio usando el test del servidor del laboratorio SSL, debería obtener el grado A.

Terminemos, probando el proceso de renovación.

Paso 5 — Verificar los angeles renovación automática de Certbot

Los certificados de Let’s Encrypt son válidos por noventa días únicamente. Esto se hace con el fin de incentivar a los usuarios para que automaticen el proceso de renovación de certificados. El paquete certbot que instalamos ya se ha ocupado de adicionar un archivo de comandos de renovación en /and so on/cron.d. Este archivo de comandos se ejecuta dos veces al día y renovará automáticamente los certificados que presenten una fecha de expiración dentro de los siguientes treinta días.

Para probar el proceso de renovación, puedes hacer un ensayo mediante certbot:

  • sudo certbot renew --dry-run

Si no se despliegan errores, el proceso se encuentra funcional. De ser necesario, Certbot renovará tus certificados y recargará Nginx para activar los cambios. Si el proceso automático de renovación alguna vez fallase, Let’s Encrypt enviará un mensaje al correo electrónico que especificaste, alertando que tu certificado se encuentra próximo a expirar.

Conclusión

En este instructional, instalaste el cliente de Let’s Encrypt: certbot, transferiste los certificados SSL para tu dominio, configuraste Nginx para usar estos certificados, y configuraste los angeles renovación automática de los mismos. Si tienes más preguntas acerca del uso de Certbot, su documentación es un buen lugar para empezar.