Cómo utilizar Let's encrypt certificados SSL para granjas HTTPS

Ver Categorías

Cómo utilizar Let's encrypt certificados SSL para granjas HTTPS

Resumen #

Let's Encrypt es una autoridad de certificación abierta y automatizada que utiliza el protocolo ACME ( Automatic Certificate Management Environment ) para proporcionar certificados TLS/SSL gratuitos a cualquier cliente compatible. Estos certificados se pueden usar para cifrar la comunicación entre los servidores web y los usuarios.

Este tutorial discutirá brevemente las autoridades certificadoras y cómo RELIANOID la integración funciona con Let's Encrypt, luego revise cómo RELIANOID utiliza el certbot (cliente ACME) para realizar la comunicación con la infraestructura Let's encrypt.

RELIANOID Load Balancer 6.0.3 o versión superior incluye un pequeño contenedor certbot llamado letsencryptz Para utilizar la funcionalidad webroot de Certbot, las siguientes líneas explican cómo funciona este contenedor. Tenga todo esto en cuenta para que funcione en entornos de producción.

¿Cómo funciona la validación de Let's encrypt? #

Como breve descripción de la funcionalidad de webroot, el complemento webroot funciona creando un archivo temporal para cada uno de los dominios solicitados en el RELIANOID ruta de archivo /usr/local/relianoid/app/letsencryptz/webroot/.well-known/acme-challenge/. Luego, el servidor de validación Let's Encrypt realiza solicitudes HTTP para validar que el DNS para cada dominio solicitado se resuelva en el servidor que ejecuta el contenedor letsencryptz y que el archivo temporal para fines de validación sea accesible; el siguiente diagrama describe un ejemplo real:

vamos a cifrar RELIANOID

En el diagrama anterior, RELIANOID El equilibrador de carga está detrás de un enrutador/firewall con una dirección IP pública 185.79.20.147 (como ejemplo), el tráfico HTTP y HTTPS se envía al balanceador de carga interno con VIP 192.168.101.31 (como ejemplo), donde el balanceador de carga está configurado con 2 granjas diferentes:

Nombre de la granja HTTPS Alojamiento web vía 192.168.101.31:443. Esta granja se encarga de ofrecer alojamiento web, junto con esto se publican diferentes servidores web a Internet. Por ejemplo, prueba1.relianoid.com, prueba2.relianoid.com, prueba3.relianoid.com Están probando páginas web publicadas en este servicio virtual, entre otras.
Nombre de la granja HTTP Redirección de alojamiento web vía 192.168.101.31:80. Esta granja solo se utiliza con fines de redireccionamiento, fuerza todo el tráfico de HTTP a HTTPS.

El diagrama anterior describe una solicitud de certificado SSL Let's Encrypt para el dominio test1.relianoid.com de la siguiente manera:

1. Se envía una solicitud de certificado desde el propio equilibrador de carga a la infraestructura de Let's Encrypt.
2. Let's encrypt detecta la nueva Solicitud de Certificado SSL para prueba1.relianoid.com
3. Cifremos y ejecutemos una resolución IP de DNS para el host solicitado: prueba1.relianoid.com comprobando que el resultado es la IP pública, la misma IP de origen que inició la solicitud.
4. En este punto, cifremos los anuncios para letsencryptz script (webroot cerbot) que necesita para crear un archivo con un Hachís en la vía pública http://test1.relianoid.com/.well-know/acme-challenge/ (Puerto TCP 80), directorio local /usr/local/relianoid/app/letsencryptz/webroot/.well-known/acme-challenge/. Entonces, letsencryptz configura un servicio temporal para que este archivo sea accesible desde Internet (la granja Redirección de alojamiento web va a ser modificado para este propósito. Si aún no hay una granja configurada letsencryptz creará uno temporal en este VIP y Puerto).
6. Tan pronto como letsencryptz confirma la creación del servicio temporal, los servidores Lets Encrypt verifican que se haya creado el archivo de validación temporal y que el Hachís el contenido es correcto
7. Finalmente, los servidores Let's Encrypt responden a la primera solicitud con el certificado ya creado para el Nombre común (CN) prueba1.relianoid.com.
8. RELIANOID almacenará el certificado ya creado en la ruta local /usr/local/relianoid/config/ y ya está listo para ser configurado en la granja Alojamiento web.

En esta etapa, el nuevo certificado Let's Encrypt se utilizaría para el servicio virtual HTTPS.

Cifremos los comandos de automatización #

Como se describe, el script letsencryptz automatizará las acciones necesarias para administrar sus certificados SSL, como crearlos, renovarlos, eliminarlos o listarlos, entre otras. A continuación, encontrará los comandos disponibles.

root@zva6k:~# letsencryptz descripción de letsencryptz: letsencryptz es un contenedor de Let's Encrypt (certbot) con parámetros mínimos listo para administrar certificados Let's Encrypt para perfiles https de Relianoid. Tenga en cuenta que este contenedor utiliza la función webroot de certbot, por lo que la arquitectura pública Let's encrypt requiere conectarse con una IP virtual local y un puerto (TCP 80 por defecto) para realizar una validación de solicitud para el dominio solicitado, por lo que tan pronto como se usa el parámetro "obtener", este script configurará una granja HTTP a la que accederá Let's encrypt para fines de verificación, esta configuración la realiza automáticamente este mismo script, solo asegúrese de que la IP virtual y el puerto HTTP 80 utilizados no sean utilizados por ninguna otra granja de equilibrio de carga, y también asegúrese de que la resolución de DNS para el dominio solicitado sea accesible desde el sistema let's encrypt.


uso: /usr/local/relianoid/bin/letsencryptz acción: --obtain | --destroy | --renew | --list | --listconf | --help --obtain: Solicitar nuevos certificados utilizando el módulo webroot cert-bot.

		comandos: --vip --granja --dominio --dominio --dominio --test --vip: La IP Virtual ya configurada fue para publicar un servidor web temporal, este se conectará con los servidores públicos de let's encrypt para verificar la solicitud del certificado. La IP virtual debe estar libre en el puerto 80 para poder ser vinculada por un proceso local, si no está libre entonces utilice --farm en su lugar.
        		--farm: El nombre de la granja que configura un servicio temporal llamado "letsencryptz", si no se utiliza ninguna granja se configurará una granja temporal llamada "letsencryptRelianoid" en la IP virtual seleccionada.
        		--domain: El dominio para el cual se solicita el certificado, es decir www.miempresa.com.
			--test: Parámetro opcional, si se utiliza, el certificado se solicita para fines de prueba.

	--destroy: revoca y elimina el nombre del certificado indicado, la acción se rechaza si el certificado dado está en uso en una granja.
		
		comandos: --certname --certname: Nombre del certificado, este valor se puede obtener de la acción --list.

	--renew: Renueva los certificados próximos a caducar, no se necesitan comandos comandos: --test --forcerestart --vip --granja --test: Parámetro opcional, si se utiliza se ejecuta un ensayo, se simula la renovación de los certificados. 
			--forcerestart: Parámetro opcional, si se utiliza las granjas que estén usando los certificados renovados se reiniciarán para aplicar los cambios.
                        --vip: La IP Virtual ya configurada donde publicar un servidor web temporal, este estará conectado por los servidores públicos de let's encrypt para verificar la renovación del certificado. La IP virtual debe estar libre en el puerto 80 para poder ser vinculada por un proceso local, si no está libre entonces utilice --farm en su lugar.
                        --farm: El nombre de la granja que configura un servicio temporal llamado "letsencryptz", si no se utiliza ninguna granja se configurará una granja temporal llamada "letsencryptRelainoid" en la IP virtual seleccionada.

	--list: Lista todos los certificados locales administrados por let's encrypt y el estado, no se necesitan comandos.

	--listconf: Listar losRELIANOID


La primera vez que se ejecute letsencryptz, tardará un tiempo porque el sistema instalará automáticamente las dependencias no resueltas; además, se realiza una revisión de la configuración antes de empezar a usarlo. Let's Encrypt solicita una cuenta de correo electrónico o un contacto para fines relacionados con los certificados. Esta cuenta de correo electrónico se utilizará en cualquier acción realizada contra el sistema Let's Encrypt. Este correo electrónico se puede configurar en el archivo de configuración principal /usr/local/relianoid/config/global.conf , directiva $le_email.

A continuación se muestran algunos ejemplos de uso.

RELIANOID Creación de certificados Let's Encrypt #

Este comando solicita un nuevo certificado para el dominio test2.relianoid.com . Tenga en cuenta que la IP virtual (VIP) proporcionada será la interna, cuyo tráfico deberá ser redirigido mediante NAT desde la IP pública a la interna. Si Let's Encrypt no puede acceder a este servicio, la solicitud será denegada.

root@zva6k:~# letsencryptz --obtain --vip 192.168.101.31 --domain test2.relianoid.com ADVERTENCIA: No se especificó ningún nombre de granja, se creará una granja temporal con el nombre letsencryptRelianoid en el puerto VIP 192.168.101.31 80. Configurando granja para let's encrypt Verificación del nombre del certificado Obteniendo certificado para los dominios test2.relianoid.com... Guardando registro de depuración en /var/log/letsencrypt/letsencrypt.log Complementos seleccionados: Autenticador webroot, Instalador Ninguno Obteniendo un nuevo certificado Ruta(s) no estándar, es posible que no funcione con crontab instalado por el administrador de paquetes de su sistema operativo Solicitud de certificado para los dominios test2.relianoid.com Aceptar Certificado creado con nombre test2.relianoid.com en formato PEM listo para perfil HTTPS Destruyendo configuración webroot para la granja letsencryptRelianoid Eliminando configuración ya existente para letsencryptRelianoid, servicio letsencryptz Reiniciar granjas usando certificados renovados: 

RELIANOID Listado de certificados Let's Encrypt #

La ejecución de este comando mostrará los certificados actuales gestionados por RELIANOID Ciframos el sistema.

root@zva6k:~# letsencryptz --list Listado de todos los certificados disponibles para la configuración actual en el directorio de configuración /usr/local/relianoid/config/letsencrypt/ Guardado del registro de depuración en /var/log/letsencrypt/letsencrypt.log Nombre del certificado: test1.relianoid.com Dominio(s): test1.relianoid.com Fecha de caducidad: 2019-09-19 10:48:02+00:00 (VÁLIDO: 77 días) Archivo de certificado Pem: /usr/local/relianoid/config/test1_relianoid_es.pem Nombre del certificado: test3.relianoid.com Dominio(s): test3.relianoid.com Fecha de caducidad: 2019-09-26 06:32:52+00:00 (VÁLIDO: 83 días) Archivo de certificado Pem: /usr/local/relianoid/config/test3_relianoid_es.pem


Tenga en cuenta el campo Nombre del certificado , este campo será reconocido por el wrapper letsencryptz como –certname.

RELIANOID Renovación del certificado Let's Encrypt #

El comando anterior comprueba si algún certificado ya generado requiere renovación; en ese caso, la renovación se realizará automáticamente. Tenga en cuenta que si el certificado renovado está en uso, será necesario reiniciar la granja de servidores para aplicar el cambio. Utilice la opción –forcerestart si desea que Let's Encrypt reinicie todas las granjas necesarias para aplicar los cambios.

root@zva6k:~# letsencryptz --renew --vip 192.168.101.31 Renovando todos los certificados requeridos Guardando el registro de depuración en /var/log/letsencrypt/letsencrypt.log El certificado aún no debe renovarse El certificado aún no debe renovarse

RELIANOID Vamos a cifrar la eliminación del certificado #

Este comando revoca y elimina el certificado especificado. En caso de que el sistema detecte que el certificado seleccionado está siendo utilizado por alguna granja HTTPS, la acción será rechazada. En el ejemplo anterior, la acción de eliminación se rechaza porque el certificado está siendo utilizado por la granja testhttps.

root@zva6k:~# letsencryptz --destroy --certname test3.relianoid.com Revocando y eliminando el(los) certificado(s) test3.relianoid.com para la configuración actual... Este archivo no se puede eliminar porque lo utilizan las granjas: testhttps

Una vez que el certificado sea dado de baja de la finca se procederá a:

root@zva6k:~# letsencryptz --destroy --certname test3.relianoid.com Revocando y eliminando el(los) certificado(s) test3.relianoid.com para la configuración actual... Guardando el registro de depuración en /var/log/letsencrypt/letsencrypt.log Certificado(s) eliminado(s) test3.relianoid.com en la ruta /usr/local/relianoid/config/test3_relianoid_es.pem

Migrar certificados Let's Encrypt a RELIANOID #

RELIANOID El equilibrador de carga guarda todos los archivos de configuración de certbot en el camino local /usr/local/zevenet/config/letsencrypt/. Para mover sus archivos de configuración de certbot existentes (de forma predeterminada en /etc/letsencrypt) de otro servidor para RELIANOID, sólo tienes que hacer un tarball (archivo tar.gz) de este directorio de configuración existente en tu servidor y descomprimir el contenido en el RELIANOID Cifremos la ruta de configuración. Finalmente, considere modificar la variable. $le_email en el archivo global.conf al mismo correo electrónico utilizado en las solicitudes anteriores.

Soporte para la agrupación en clústeres de certificados Let's Encrypt #

RELIANOID El complemento Let's Encrypt es totalmente compatible con RELIANOID Servicio de clúster. Todas las acciones de Let's Encrypt se guardan en un archivo de configuración replicado por el RELIANOID Cluster Service, por lo que cualquier acción ejecutada en el MAESTRO El nodo se replicará en el ESCLAVO nodo automáticamente, pero cualquier acción ejecutada en el ESCLAVO El nodo relacionado con Let's Encrypt será descartado para evitar cualquier desincronización.

Renovación automática de certificados Let's Encrypt #

RELIANOID El complemento Let's Encrypt se puede configurar para verificar diariamente si algún certificado necesita una renovación, en caso de que el sistema renueve automáticamente un certificado determinado y esté en uso por alguna granja, entonces la granja se reiniciará automáticamente para aplicar el certificado. cambiar.

Para configurar la renovación automática por favor haga lo siguiente:

Cree el siguiente archivo cron /etc/cron.d/letsencryptz con el siguiente contenido:

raíz@zva6k:~# cat /etc/cron.d/letsencryptz 00 00 * * * raíz /usr/local/relianoid/bin/letsencryptz --renew --forcerestart --vip 192.168.101.31

Con esta configuración, la verificación de renovación se ejecutará diariamente a las 00:00 (medianoche). Y el VIP 192.168.101.31 se utilizará en el puerto 80 con fines de verificación desde Let's Encrypt System.

Referencias #

Algunas referencias utilizadas en este artículo son:

Webroot y Certbot
Cómo funciona Let's Encrypt

📄 Descarga este documento en formato PDF #

    EMAIL: *

    Desarrollado por BetterDocs