Mise en oeuvre de Let’sEncrypt dans le PaaS Azure (1/3)

Le cloud, c’est un jeu de lego. Pour produire un service, on va combiner différents services. Ce qui est intéressant, c’est qu’il n’y a pas une seule combinaison mais bien plusieurs. Plus les Plateformes développent leurs services, plus on dispose de nouvelles combinaisons.

Dans ce jeu de Lego, on retrouve souvent des certificats. Lors du déploiement de solutions dans Azure, on va utiliser des solutions comme Azure Key Vault pour y stocker nos certificats. C’est un sujet que j’ai déjà évoqué dans plusieurs billets sur Azure Key Vault. Dans Azure, on peut aussi demander de générer nos propres certificats avec le App Service Certificate. Ce service permet de générer automatiquement (ainsi que renouveler) nos certificats. Au moment d’écrire ce billet, le service App Service Certificate ne propose que GoDaddy comme fournisseur. C’est une démarche intéressante mais pour nos développeurs, c’est une solution payante. En toute logique, nos développeurs vont se tourner vers des certificats auto-signés (beurk). Pourtant, en creusant un peu dans les tréfonds des Web Application, on peut trouver des solutions bien plus élégantes. Le projet Let’s Encrypt et celle-ci et est disponible sous forme de Web App Extension dans les App Services. C’est un peu moins intégré que le App Service Certificate mais ce n’est pas impossible à mettre en œuvre. C’est le sujet de ce billet : Comment utiliser la solution Let’s Encrypt avec Paas App Service. Ce billet sera organisé en plusieurs parties :

Dans mon introduction, j’ai parlé de Web Application. Donc logiquement on connait déjà les prérequis ou presque :

  • Un groupe de ressources histoire de regrouper nos ressources.
  • Un Service Plan qui va porter notre Web App (subtilité, il nous faudra un Service Plan nous autorisant d’utiliser le SSL et les Custom Domains)

 

Commençons par créer notre groupe de ressources avec simple ligne PowerShell :

New-AzureRmResourceGroup -Name « DemoLetsEncrypt » -Location « West Europe »

clip_image001

 

Ci-dessous la configuration retenue pour la Web Application.

clip_image002

 

Dans ma configuration, je n’ai pas retenu d’implémenter App Insight. A l’heure où j’écris ce billet, App Service est encore en Preview et pas disponible dans toutes les régions Azure. La subtilité, c’est le choix de l’App Service Plan. J’ai retenu le plan B1 qui est le premier à proposer le support des Custom Domains ainsi que celui des certificats.

clip_image003

 

Avec un peu de PowerShell, on peut retrouver les ressources provisionnées :

Get-AzureRmResourceGroup -Name DemoLetsEncrypt | Find-AzureRmResource

clip_image004

 

Avant de poursuivre, on va mettre en place les prérequis pour le Custom Domain. Dans ma zone DNS « Simplebydesign.fr », j’ai créé un enregistrement CNAME pour le nom « DemoLetsEncrypt » qui pointe sur le nom DNS Azure de mon site « demoletsencrypt.azurewebsites.net ». Pour instant le site ne répond qu’au seul hostname « demoletsencrypt.azureWebsite.Net ». On va juste lui en adjoindre un nouveau :

clip_image005

 

Si on n’a pas été patient dans la propagation de la zone DNS, cela va échouer. A noter que dans Azure, on peut contourner ce genre de problème et obtenir un service plus intégré en utilisant le service DNS d’Azure. Techniquement, un sous-domaine DNS de la zone « simplebydesign.fr » serait délégué au service Azure DNS qui se chargera de la gestion de cette zone. Avec cette approche, nous pourrons créer l’enregistrement DNS depuis Azure et nous assurer de sa propagation dans les secondes qui suivent mais revenons à notre billet. Lorsqu’on est patient, cela fonctionne.

clip_image006

 

Quelques secondes plus tard, notre site web répondra à son nom Azure mais aussi à son nouveau Custom Domain

clip_image007

 

Dernière étape dans nos prérequis, la mise en place d’un Storage Account. Nous allons en avoir besoin avec Lets’Encrypt pour permettre à la Web Extension d’y déverser ses logs :

New-AzureRmStorageAccount -ResourceGroupName « DemoLetsEncrypt » -AccountName « demoletsencryptlogs » -Location « West Europe » -SkuName « Standard_LRS » -Kind « Storage »

clip_image008

 

Remarque : Pour faire simple, j’ai utilisé un Storage Account standard, je n’ai pas cherché à optimiser avec du stockage chaud/froid. Ce n’est pas le but de ce billet.

 

Voilà pour les prérequis à la mise en œuvre de la Web Extension de Lets Encrypt. Prochaine étape, son installation et sa configuration.

 

BenoîtS – Simple and secure by design but Business compliant (with disruptive flag enabled)

Benoit

Simple, yes, Secure Maybe, by design for sure, Business compliant always!

2 réflexions au sujet de « Mise en oeuvre de Let’sEncrypt dans le PaaS Azure (1/3) »

  1. Ping : Certification SSL d’un site web Azure, via Let’s Encrypt – Blog of Denis Voituron

  2. Ping : SSL certification of an Azure website, via Let’s Encrypt – Blog of Denis Voituron

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.