Automatisation des renouvellements de certificats SSL Azure Application Gateway avec Let’s Encrypt et Azure Automation

Contenu

16b7623f-bb2b-45be-80e2-34869ed42955-7654250 Chiffrons c'est un LIBREAutorité de certification ouverte et automatisée offerte par l'organisation à but non lucratif Groupe de recherche sur la sécurité Internet (ISRG) et avec le soutien de grandes entreprises comme Google, Facebook, Microsoft et bien d'autres, avoir un site Web plus sécurisé et respectueux de la vie privée.

Il est déjà utilisé par de nombreux sites Web et services à travers le monde. Si vous pouvez obtenir gratuitement des certificats SSL émis par une autorité de certification connue, il n'y a aucune excuse pour utiliser HTTPS sur votre site Web et être en sécurité par défaut. Le processus d'émission d'un certificat Let's Encrypt peut être automatisé grâce à l'utilisation d'un logiciel qui utilise le Protocole ACME, qui fonctionne normalement sur votre hébergeur. Ces certificats expirent généralement dans pas plus de 3 mois (quelque chose qui augmente la sécurité du système), il faut donc automatiser les renouvellements pour éviter les renouvellements manuels.

Un buen ejemplo de esta implementación es la extensión Let’s Encrypt de Azure App Service, qui automatise les renouvellements à l'aide d'une tâche Web. Vous pouvez en savoir plus à ce sujet dans ce Article de blog de Scott Hanselman.

À l'aide de la passerelle d'application Azure, l'une des choses que vous devez faire est d'installer le certificat SSL sur la passerelle. Vous souhaitez probablement implémenter le déchargement SSL, donc toutes les ressources nécessaires pour protéger le canal de communication sont gérées par la passerelle et non par les serveurs derrière.

Dans ce billet, Je vais expliquer seulement ce scénario, montrant comment vous pouvez automatiser les renouvellements SSL de Let's Encrypt sur une passerelle d'application Azure.

71194445-b559-49ca-821b-c5f1ba4ddb3e-2665380

L'idée derrière cette implémentation est d'éviter toute modification dans toute infrastructure qui se trouve derrière la passerelle d'application, pour compléter les vérifications et validations de renouvellement effectuées par le processus Let’s Encrypt. En résumé:

  1. un runbook Azure Automation s'exécutera selon un calendrier (c'est-à-dire, une fois toutes les deux semaines) pour renouveler et installer le certificat Let’s Encrypt actuel. Let's Encrypt doit valider la propriété du domaine, il renvoie donc un code de défi que le runbook stocke dans un compte de stockage derrière la passerelle d'application;
  2. une règle spéciale dans Application Gateway redirige le contrôle de validation de Let's Encrypt vers le compte de stockage, donc la vérification de la propriété du domaine est réussie
  3. le runbook Azure Automation télécharge enfin le nouveau certificat et l'installe sur Application Gateway

Notez qu'avec cette implémentation, pas besoin de manipuler une autre infrastructure derrière Application Gateway.

Je souhaitais émettre et automatiser les renouvellements des certificats Let’s Encrypt pour « api.davidjrh.com ». Notez que j'avais déjà un enregistrement DNS de type A dirigé vers ma passerelle d'application.

0d81f27b-d4e6-47d5-b396-f2f501bd719a-3502620

C: > nslookup api.davidjrh.com
Serveur: google-public-dns-a.google.com
adresse: 8.8.8.8

 

Réponse non autorisée:
nom: api.davidjrh.com
adresse: 23.102.37.253

Pour mettre en œuvre le processus de renouvellement de Let's Encrypt pour émettre de nouveaux certificats SSL sur Application Gateway, Suivez ces étapes:

Créer un compte de stockage

1. Créez un compte Azure Storage qui sera utilisé pour héberger les demandes de défi pour la vérification de la propriété du domaine DNS. Utilice los paramètres más baratos, Quoi “Performances standards” y LRS.

77ebd1e0-9a92-414f-b4de-41a76ab68e28-8869793

2. Une fois le compte de stockage prêt, créer un conteneur “Publique” avec les autorisations de “blob public”.

6c913dfa-681e-4c31-b986-c805c6c08ad9-8183586

3. Créer le répertoire virtuel ” .célèbre défi d'acme” avec l'outil Explorateur de stockage.

d5923013-af23-49ae-97a3-354750084039-9006069

Modifier Application Gateway pour rediriger les demandes de défi ACME vers le compte de stockage.

4. Lorsque vous avez créé Azure Application Gateway, vous avez probablement spécifié une règle HTTP associée à un écouteur http. Dans ce cas, vous devez supprimer cette règle qui sera remplacée par une règle basée sur le chemin comme indiqué à l'étape suivante

d94b0fee-541d-4f92-819f-7c3967e533f3-7855175

5. Créez une nouvelle règle basée sur la route qui redirige les demandes que Let's Encrypt fera dans le processus de renouvellement avec la configuration suivante:

da00d758-665d-43cc-9e98-9b60f02b5b4d-1217886

6. Définissez les paramètres que vous aviez dans la règle http et cliquez sur “Ajouter une configuration”

dd6ee5f2-1511-4e12-a90c-f5718cb1add0-7891161

7. Spécifiez les paramètres de configuration avec le chemin “/.bien connu/acme-challenge/*” avec une redirection (permanent), pointant vers un site externe avec l'URL du conteneur de compte de stockage que vous avez créée précédemment:

6294fcad-45c8-443e-9e06-c9b37fde26d4-2861319

19fbcc55-b935-48fc-804a-43a9abb1b190-9371724

9. Testez la règle en créant un fichier appelé “test.html” dans le compte de stockage et en parcourant l'URL /.bien connu/acme-challenge/test.html”>/.bien connu/acme-challenge/test.html”>http:///.bien connu/acme-challenge/test.html

a25dbf84-c632-4012-80f9-2957dd69d086-3330642

Si tout a été configuré correctement, lors de la navigation sur l'url, la passerelle d'application doit rediriger votre navigateur vers le compte de stockage comme indiqué ci-dessous. Veuillez ne pas continuer tant que vous n'avez pas configuré avec succès la règle de redirection.

2066c740-bd7b-43d3-b2c5-af198e3a0222-3732689

Installation du certificat Let's Encrypt pour la première fois sur la passerelle

Pour installer le certificat Let's Encrypt sur la passerelle pour la première fois, vous devez d'abord l'émettre. Il existe plusieurs façons de délivrer le certificat, mais le plus simple est d'utiliser Certbot, un outil disponible sur GitHub et construit en Python qui vous permet d'obtenir des certificats de Let's Encrypt. Il y a d'autres clients, afin que vous puissiez probablement partager de meilleures idées dans la zone de commentaire de cet article.

J'utilise normalement un PC Windows 10 comme environnement de développement, et le processus pour installer l'outil est décrit dans ce lien, qui montre essentiellement comment installer python, puis exécuter “pip installer le certbot”. Mais depuis que j'ai activé le sous-système Linux sur mon ordinateur portable Ubuntu Windows, J'ai suivi cette autre approche:

  1. Ouverture d'une console bash sur le sous-système Linux.
  2. Python installé avec “sudo apt-get install certbot”
  3. J'ai exécuté la commande suivante pour émettre le certificat uniquement localement en mode manuel, enregistrement d'un compte avec mon adresse e-mail dans le service Let's Encrypt et émission d'un certificat pour le domaine “api.davidjrh.com” accepter les conditions d'utilisation:
    sudo certbot certonly – email -d api.davidjrh.com –d'accord –Manuel
    b2772023-72ff-4ccd-94a8-5a56a1c683b2-6156685
  4. Vous avez suivi les instructions à l'écran et créé le fichier dans le compte de stockage avec le contenu requis
    30dd8ce4-28c2-4fev-975c-cf8d289ca707-7599761
  5. A délivré le certificat avec succès

davidjrh @ BUREAU-JQL0N5G: ~ $ sudo ls /etc/letsencrypt/live/api.davidjrh.com
LÉAME cert.pem chain.pem fullchain.pem privkey.pem

Le certificat, la chaîne et la clé sont sorties au format .pem, donc télécharger le certificat en .pfx, j'ai utilisé OpenSSL pour convertir de PEM en PFX:

794cb37b-358a-4140-b4dd-72463394d65c-5188707

Finalement, J'ai modifié mon écouteur HTTPS actuel pour utiliser le certificat LetsEncrypt. IMPORTANT: souvenez-vous du nom que vous allez donner à ce certificat, puisque vous devrez le spécifier comme paramètre dans le processus de renouvellement plus tard

1190c74b-d5e9-4637-86c5-2d85c5959e83-6194814

Après avoir appliqué les modifications, vous pouvez vérifier que le certificat SSL LetsEncrypt fonctionne correctement en parcourant simplement une ressource via HTTPS

d4857036-dd9f-4832-9dae-4417c07d98cc-9749850

Maintenant que le certificat LetsEncrypt est installé et fonctionne correctement, la prochaine étape consiste à automatiser les renouvellements. Faisons-le avec un runbook Azure Automation.

Créer un compte d'automatisation

1. Dans le portail Azure, créer un compte Azure Automation (ou utiliser un existant) pour héberger le runbook. Notez que vous pouvez créer ce compte d'automatisation et l'exécuter jusqu'à ce que 500 minutes par mois gratuitement.

7ce18f74-9168-4c4a-8fe5-adc5e94feda7-7925603

2. À l'intérieur de la ressource Automation, ouvrez Modules et parcourez la galerie pour importer les modules suivants: ‘AzureRM.profile’, ‘AzureRM.Network’ et 'ACMESharp'. Assurez-vous d'importer la dernière version de tous et de mettre à jour les versions actuelles déjà importées (par exemple, AzureRM.profile est activé par défaut, mais nous avons besoin de la dernière version disponible dans la galerie).

2dd8a833-c908-4e6c-8765-f8c404629460-9082209

3. Dans le compte Azure Automation, créer un runbook PowerShell appelé LetsEncryptCertificateRenewal

6e0a9a3b-88bc-48f8-941c-1f4b84b2401c-7101631

4. Modifiez le runbook PowerShell et collez le contenu du script disponible dans GitHub et cliquez sur le bouton “publier” afin qu'il soit disponible pour votre programmation.

a9b644b6-f44c-49f9-89f3-b2142ac38efa-4320385

Puede probar el runbook en el panneau de prueba y pasar los parámetros necesarios (nom de domaine, adresse e-mail utilisée dans LetsEncrypt, noms de groupe de ressources, nom du compte de stockage, nom de la passerelle d'application et nom du certificat que vous avez utilisé lors de la configuration de l'écouteur https ). Il faut quelques 15 minutes pour terminer. Lorsque vous naviguez à nouveau sur le site avec https, vous remarquerez que le certificat a été mis à jour avec succès.

IMPORTANT: LetsEncrypt a ses propres limites hebdomadaires lors de l'émission de certificats pour un domaine spécifique en production (50 par semaine), donc soyez prudent lorsque vous testez le script powershell.

217e2735-3dc7-409e-83cb-8778d91f1f1e-9497931

5. Créer un programme d'automatisation Azure pour renouveler le certificat SSL. Dans mon cas, J'ai créé un calendrier pour renouveler chaque 2 semaines.

f2d4bf48-e355-4a20-9ef8-2a0a624e0b8d-4912355

6. Configurez les paramètres pour planifier le runbook avec la planification que vous avez créée précédemment.

b879223a-bc5b-4f8f-917c-a0f1afcee32a-6237806

Et c'est tout. Vous avez maintenant configuré les renouvellements automatiques de votre certificat SSL Application Gateway avec Azure Automation.

J'espère que ça aide!

Abonnez-vous à notre newsletter

Nous ne vous enverrons pas de courrier SPAM. Nous le détestons autant que vous.