Vamos a cifrar è un LIBREAutoridad de certificación abierta y automatizada que le ofrece la organización sin fines de lucro Grupo de investigación de seguridad de Internet (ISRG) y con el apoyo de grandes corporaciones como Google, Facebook, Microsoft y muchos otros, para tener una Web más segura y respetuosa con la privacidad.
Muchos sitios web y servicios ya lo utilizan en todo el mundo. Si puede obtener certificados SSL emitidos por una CA conocida de forma gratuita, no hay excusa para usar HTTPS en su sitio web y estar seguro de forma predeterminada. El proceso de emisión de un certificado Let’s Encrypt se puede automatizar mediante el uso de un software que utiliza el Protocolo ACME, que normalmente se ejecuta en su proveedor de alojamiento web. Estos certificados normalmente caducan en no más de 3 mesi (algo que aumenta la seguridad del sistema), por lo que es necesario automatizar las renovaciones para evitar las renovaciones manuales.
Un buen ejemplo de esta implementación es la extensión Let’s Encrypt de Servizio app di AzureAzure App Service es una plataforma de Microsoft que permite desarrollar y alojar aplicaciones web y móviles en la nube. Ofrece soporte para varios lenguajes de programación, como .NET, Giava, PHP y Python. Con características como escalado automático, integración continua y seguridad avanzada, Azure App Service facilita a los desarrolladores la construcción de aplicaciones robustas y escalables sin preocuparse por la infraestructura subyacente...., que automatiza las renovaciones mediante un trabajo web. Puede leer más sobre esto en este Publicación del blog de Scott Hanselman.
Al usar Azure Application Gateway, una de las cosas que debe hacer es instalar el certificado SSL en la puerta de enlace. Probablemente desee implementar la descarga SSL, por lo que todos los recursos necesarios para proteger el canal de comunicación los maneja la puerta de enlace y no los servidores detrás.
In questo post, voy a explicar solo este escenario, mostrando cómo puede automatizar las renovaciones de Let’s Encrypt SSL en una puerta de enlace de aplicaciones de Azure.
La idea detrás de esta implementación es evitar cualquier modificación en cualquier infraestructura que esté detrás de Application Gateway, para completar las verificaciones de renovación y validaciones realizadas por el proceso Let’s Encrypt. In sintesi:
- se ejecutará un runbook de Azure Automation en un cronograma (vale a dire, una vez cada dos semanas) para renovar e instalar el certificado Let’s Encrypt actual. Let’s Encrypt necesita validar la propiedad del dominio, por lo que devuelve un código de desafío que el runbook almacena en una cuenta de almacenamiento detrás de la puerta de enlace de la aplicación;
- una regla especial en Application Gateway redirige la verificación de validación proveniente de Let’s Encrypt a la cuenta de almacenamiento, por lo que la verificación de propiedad del dominio es exitosa
- el runbook de Azure Automation finalmente descarga el nuevo certificado y lo instala en Application Gateway
Tenga en cuenta que con esta implementación, no es necesario manipular ninguna otra infraestructura detrás de Application Gateway.
Quería emitir y automatizar las renovaciones de certificados Let’s Encrypt para “api.davidjrh.com”. Tenga en cuenta que ya tenía un registro DNS de Tipo A dirigido a mi Application Gateway.
C: > nslookup api.davidjrh.com
server: google-public-dns-a.google.com
Indirizzo: 8.8.8.8
Respuesta no autorizada:
Nome: api.davidjrh.com
Indirizzo: 23.102.37.253
Para implementar el proceso de renovación Let’s Encrypt para emitir nuevos certificados SSL en Application Gateway, Segui questi passi:
Crear una cuenta de almacenamiento
1. Cree una cuenta de Azure Storage que se usará para alojar las solicitudes de desafío para la verificación de propiedad del dominio DNS. Utilice los parametriIl "parametri" sono variabili o criteri che vengono utilizzati per definire, misurare o valutare un fenomeno o un sistema. In vari campi come la statistica, Informatica e Ricerca Scientifica, I parametri sono fondamentali per stabilire norme e standard che guidano l'analisi e l'interpretazione dei dati. La loro corretta selezione e gestione sono fondamentali per ottenere risultati accurati e pertinenti in qualsiasi studio o progetto.... más baratos, Che cosa “Rendimiento estándar” y LRS.
2. Una vez que la cuenta de almacenamiento esté lista, cree un contenedor “público” con permisos de “blob público”.
3. Cree el directorio virtual ” .well-known acme-challenge” con la herramienta Explorador de Storage.
Modifique Application Gateway para redirigir las solicitudes de desafío ACME a la cuenta de almacenamiento.
4. Cuando creó Azure Application Gateway, probablemente especificó una regla HTTP que estaba asociada a un agente de escucha de http. In questo caso, debe eliminar esa regla que será reemplazada por una regla basada en la ruta como se muestra en el siguiente paso
5. Cree una nueva regla basada en ruta que redirija las solicitudes que realizará Let’s Encrypt en el proceso de renovación con la siguiente configuración:
6. Establezca los parámetros que tenía en la regla http y haga clic en “Agregar configuración”
7. Especifique los parámetros de configuración con la ruta “/.well-known/acme-challenge/*” con una redirección (permanente), apuntando a un sitio externo con la URL del contenedor de la cuenta de almacenamiento que creó antes:
9. Pruebe la regla creando un archivo llamado “test.html” en la cuenta de almacenamiento y navegando por la URL /.well-known/acme-challenge/test.html”>/.well-known/acme-challenge/test.html”>http:///.well-known/acme-challenge/test.html
Si todo se configuró correctamente, al navegar por la URL, la puerta de enlace de la aplicación debe redirigir su navegador a la cuenta de almacenamiento como se muestra a continuación. No continúe hasta que haya configurado correctamente la regla de redirección.
Instalación del certificado Let’s Encrypt por primera vez en la puerta de enlace
Para instalar el certificado Let’s Encrypt en la puerta de enlace por primera vez, primero debe emitirlo. Hay varias formas de emitir el certificado, pero la más sencilla es utilizar Certbot, una herramienta disponible en GitHub y construida en Python que le permite obtener certificados de Let’s Encrypt. Hay otros clientes, por lo que probablemente puedas compartir mejores ideas en el área de comentarios de esta publicación.
Normalmente uso una PC con Windows 10 como entorno de desarrollo, y el proceso para instalar la herramienta se describe en este enlace, que básicamente muestra cómo instalar Python y luego ejecutar “pip install certbot”. Pero como tenía el subsistema Linux habilitado en mi computadora portátil con Windows con Ubuntu, seguí este otro enfoque:
- Abrió una consola bash en el subsistema de Linux.
- Python instalado con “sudo apt-get install certbot”
- Ejecuté el siguiente comando para emitir el certificado solo localmente en modo manual, registrando una cuenta con mi dirección de correo electrónico en el servicio Let’s Encrypt y emitiendo un certificado para el dominio “api.davidjrh.com” aceptando los Términos de servicio:
sudo certbot certonly – email -d api.davidjrh.com –agree-tos –Manuale
- Siguió las instrucciones de la pantalla y creó el archivo en la cuenta de almacenamiento con el contenido requerido
- Emitió con éxito el certificado
davidjrh @ DESKTOP-JQL0N5G: ~ $ sudo ls /etc/letsencrypt/live/api.davidjrh.com
LÉAME cert.pem chain.pem fullchain.pem privkey.pem
El certificado, la cadena y la clave se emiten en formato .pem, así que para cargar el certificado en .pfx, utilicé OpenSSL para convertir de PEM a PFX:
Finalmente, modifiqué mi escucha HTTPS actual para usar el certificado LetsEncrypt. IMPORTANTE: recuerda el nombre que le vas a dar a este certificado, ya que tendrás que especificarlo como parámetro en el proceso de renovación posteriormente
Después de aplicar los cambios, puede verificar que el certificado SSL de LetsEncrypt funcione correctamente con solo navegar por un recurso a través de HTTPS
Ahora que el certificado LetsEncrypt está instalado y funcionando correctamente, el siguiente paso es automatizar las renovaciones. Hagámoslo con un runbook de Automatización de Azure.
Crear una cuenta de automatización
1. En Azure Portal, cree una cuenta de Azure Automation (o use una existente) para alojar el runbook. Tenga en cuenta que puede crear esta cuenta de automatización y ejecutar hasta 500 minutos por mes de forma gratuita.
2. Dentro del recurso de Automatización, abra los Módulos y explore la galería para importar los siguientes módulos: ‘AzureRM.profile’, ‘AzureRM.Network’ y ‘ACMESharp’. Asegúrese de importar la última versión de todos ellos y actualizar los actuales ya importados (ad esempio, AzureRM.profile está habilitado de forma predeterminada, pero necesitamos la última versión disponible en la galería).
3. En la cuenta de Azure Automation, cree un runbook de PowerShell llamado LetsEncryptCertificateRenewal
4. Edite el runbook de PowerShell y pegue el contenido del script disponible en GitHub e fai clic sul pulsante “Publicar” para que esté disponible para su programación.
Puede probar el runbook en el pannelloUn panel è un gruppo di esperti che si riunisce per discutere e analizzare un argomento specifico. Questi forum sono comuni alle conferenze, seminari e dibattiti pubblici, dove i partecipanti condividono le loro conoscenze e prospettive. I pannelli possono riguardare una varietà di aree, Dalla scienza alla politica, e il suo obiettivo è quello di favorire lo scambio di idee e la riflessione critica tra i partecipanti.... de prueba y pasar los parámetros necesarios (nombre de dominio, dirección de correo electrónico utilizada en LetsEncrypt, nombres de grupos de recursos, nombre de la cuenta de almacenamiento, nombre de la puerta de enlace de la aplicación y el nombre del certificado que utilizó al configurar el oyente https ). Tarda unos 15 minutos en completarse. Al navegar nuevamente por el sitio con https, notará que el certificado se actualizó correctamente.
IMPORTANTE: LetsEncrypt tiene sus propios límites semanales al emitir certificados para un dominio específico en producción (50 por semana), así que tenga cuidado al probar el script de PowerShell.
5. Cree un programa de automatización de Azure para renovar el certificado SSL. Nel mio caso, creé un horario para renovarlo cada 2 settimane.
6. Configure los parámetros para programar el runbook con la programación que creó anteriormente.
E questo è tutto.. Ahora ha configurado las renovaciones automáticas de su certificado SSL de Application Gateway con Azure Automation.
¡Espero que esto ayude!