Ce billet fait partie d’une série visant à expliquer comment configurez, de bout en bout, un pipeline de déploiement continu sur Azure. Vous vous trouvez sur la première partie 🙂 Voici des liens vous permettant de lire les parties suivantes :

– Partie 1 : Créer et déployer une application ASP.NET Core MVC dans Azure
– Partie 2 : Configurer Let’s Encrypt et le renouvellement automatique
– Partie 3 : Configurer le déploiement continu depuis Azure DevOps [EN REDACTION]

Afin de continuer la série de billets commencée précédemment, nous allons aujourd’hui voir comment intégrer Let’s Encrypt afin de pouvoir profiter de certificat gratuit sur notre site.

Afin de continuer la série de billets commencée précédemment, nous allons aujourd’hui voir comment intégrer Let’s Encrypt afin de pouvoir profiter de certificat gratuit sur notre site.

Lorsque je gérais mon serveur moi-même, je passais par un outil appelé « Certbot », celui-ci me permettait de :

  • Générer à la volée des certificats pour mes sites
  • Les configurer sur mon « Reverse Proxy »
  • Les renouveler automatiquement.

Il me fallait une solution équivalente sur Azure. Notamment car Google Chrome indique désormais tous les sites non-https comme non sûr. C’est ainsi que je suis tombé sur cette extension, et que je vous écris cet article !

Ajouter un nom de domaine

La première étape est de rajouter un nom de domaine propre à notre application. J’ai opté pour une solution assez rapide, qui est de simplement définir une règle « A » pointant vers mon service Azure.

Ajout d’un nouveau nom de domaine

Rendez-vous sur la page de gestion de votre App Service et cliquez sur « Custom domains » dans le menu de gauche. Une fois sur ce menu appuyer sur le bouton « Add hostname », suivez ensuite les instructions correspondant à la méthode que vous souhaitez utiliser (CNAME, ou A).

Ces changements peuvent prendre jusqu’à 24 heures pour être effectif, un peu de patience 🙂

Préparation à la configuration pour Let’s Encrypt

Cet article va se découper en deux grandes parties :

  • la première vous montrera comment préparer votre compte Azure et vos services pour pouvoir y installer l’outil « Let’s Encrypt »
  • tandis que la seconde parlera de la configuration à proprement parler de cet outil.

Commençons !

Création du « Service Principal »

Un « Service Principal » est une entrée dans le Azure Active Directory qui peut être utilisé pour donner un accès à un groupe de ressources Azure. On peut considérer que c’est un compte de service.

Dans notre cas, ce compte nous servira lors du renouvellement automatique de nos certificats, il sera aussi utilisé la première fois lors de l’installation pour vérifier que tout fonctionne correctement.

Ajout d’un Service Principal

Pour créer un nouveau compte, il vous faudra vous rendre dans le menu « Azure Active Directory » et ensuite dans le sou menu « App Registrations ». À moins d’avoir déjà eu besoin auparavant de ce genre de compte, il est fort probable que vous arriviez sur un écran vous indiquant qu’aucune application n’existe dans ce répertoire. Nous allons donc en créer une dès maintenant. Pour ce faire, appuyez tout simplement sur le lien « New application registration ».

Dans ce formulaire, les champs suivants correspondent à :

  • Name : le nom du service principal. Je vous conseille d’en entrer un facilement identifiable.
  • Application type : laisser l’option par défaut
  • Sign-on URL : ici, vous pouvez indiquer l’adresse du site sur lequel vous souhaitez installer le certificat.

Appuyez ensuite sur « Create ».

Récupération des identifiants du Service Principal

Une fois le service principal créé, vous serez redirigés sur une page de résumé. Sur cette page prenez note de l’« Application Id », celle-ci nous sera utile pour la suite.

L’applicationId, ou ClientId est l’identifiant unique nous permettant de nous identifier par la suite

Il faut maintenant définir un mot de passe permettant d’authentifier notre service principal. Rendez-vous sur « Settings -> Key -> Password ». Ajoutez maintenant une nouvelle clé sous le titre password, la description est purement indicative. Choisissez bien de ne jamais le faire expirer et une fois sauvegardée, assurez-vous de bien copier-coller cette clé, car vous ne pourrez jamais la récupérer.

Ajouter les accès aux Ressources Group

Maintenant que notre service principal est bien créé, il faut lui donner les accès sur notre groupe de ressources. Rendez-vous dans le menu « Resource groups > Votre RG > Access control (IAM) ». Appuyez maintenant sur le bouton « Add » et remplissez le formulaire comme suit :

  • Role : Contributor
  • Assign access to ‘Azure AD user, group or application’
  • Select : Service Principal créé avant

Création Azure storage account

La dernière étape avant de passer à l’installation de l’extension est de créer un « Azure Storage ». Celui-ci servira au plug-in à stocker l’état actuel des services. Rendez-vous donc dans le menu « Storage Account » et créés en un nouveau.

Remplissez les informations comme bon vous semble, la plupart des valeurs par défaut conviendront très bien. Référez-vous à la capture d’écran pour plus d’informations. Une fois le formulaire rempli, cliquez sur « Review + Create ».

Attendez ensuite que le compte de stockage soit déployé pour vous rendre sur la ressource et sous le menu « settings », cliquez sur l’option « Access keys ». Garder la connection string dans votre presse-papier, elle vous sera utile pour le point suivant.

Configuration des connectionString

Rendez-vous maintenant sur la configuration de votre app service, et sous le menu « Application settings », ajouter deux nouvelles connection string nommées :

  • AzureWebJobsStorage
  • AzureWebJobsDashboard

Dans la valeur, coller la connexion string précédemment copiée pour le type choisissez Custom.

Installation de l’extension Let’s Encrypt

L’extension que nous allons utiliser s’appelle tout sobrement « # Let’s Encrypt Site Extension ». Je vous invite à lire la page du projet pour avoir plus d’informations et aussi pour soutenir l’auteur si vous le souhaitez.

Installation de l’extension

Rendez-vous sur votre App Service, cherchez le menu « extension » et recherchez l’extension appelée « Azure Let’s Encrypt », attention de ne pas choisir celle sans « Web Job » si vous souhaitez pouvoir profiter du renouvellement automatique.

Configuration de l’extension

Maintenant que l’application est correctement installée, il ne reste qu’à la configurer. Pour cela, rendez-vous sur https://nomDel4appServibce.scm.azurewebsites.net/letsencrypt/. Attention, si le service vous répond que cette route ne correspond à rien, il vous suffit de relancer votre service pour débloquer la situation. Vous arriverez ensuite sur la page suivante :

Voici un court descriptif de chaque chambre formulaire :

  • Tenant : c’est le nom d’une tenant dans lequel votre service principal a été créé, par exemple votredomaine.onmicrosoft.com.
  • SubscriptionId : identifiant unique de votre abonnement, vous pouvez le trouver sur la page suivante https://portal.azure.com/#blade/Microsoft_Azure_Billing/SubscriptionsBlade
  • ClientId : ApplicationId que je vous ai demandé de stocker un peu plus tôt.
  • ClientSecret : Mot de passe de votre Service Principal.
  • ResourceGroupName : Nom du groupe de ressource dans lequel votre AppService se trouve.
  • ServicePlanResourceGroupName : Nom du groupe de ressource dans lequel votre AppService Plan se trouve, il sera probablement identique au précédent.
  • Update Application Settings : Ajoute la configuration à l’AppSetting, nécessaire pour le renouvellement automatique.

Appuyer ensuite sur Next pour valider les informations et pouvoir confirmer l’enregistrement.

Contrôle et enregistrement

Vous arrivez maintenant sur une page présentant un récapitulatif des domaines, binding et certificats installés pour cette AppService. Appuyez sur Next pour pouvoir générer de nouveaux certificats.

Sélectionner tous les hostnames que vous souhaitez en maintenant la touche Ctrl enfoncée, entrer l’adresse mail sur laquelle vous recevrez les notifications de renouvellement et d’enregistrement, et appuyer sur « Request and Install certificate ». La case « UseStaging » vous permet juste de générer des certificats auto signés, dans le cas où vous seriez dans un environnement de test.

Félicitations, tout est fini ! Il ne vous reste plus qu’à configurer votre AppService pour n’autoriser que les connexions en Https (si ce n’est pas déjà fait au niveau du code de votre application). Et vous voilà maintenant l’heureux propriétaire d’un site internet sécurisé, renouvelé automatiquement, et totalement gratuit ! 😀

PS : Si ça peut vous rassurer, c’est beaucoup plus rapide la deuxième fois ;o