Utiliser un certificat SSL Let's Encrypt sous IIS 8


Vous l'aurez certainement remarqué, les navigateurs web deviennent chaque jour de plus en plus pointilleux avec les sites web qui ne supportent pas le protocole HTTPS.

Firefox a même commencé à marquer des avertissements sur les formulaires contenant des mots de passe et il ne faudra plus longtemps avant que Google ne fasse chuter le ranking de votre site web dans ses résultats de recherche si vous ne cryptez pas les communications de votre serveur.

Depuis longtemps les certificats SSL web étaient uniquement accessibles contre paiement. C’est dorénavant de l’histoire ancienne depuis décembre 2015, grâce à l’arrivée de l'initiative Let’s Encrypt.

Fondée par l'Internet Security Research Group (ISRG), une organisation d'intérêt public californienne, Let’s Encrypt a pour objectif de rendre le web plus sûr en fournissant gratuitement des certificats SSL à tous ceux qui en ont besoin. Elle prend la forme d’une Autorité de certificat ouverte, gratuite et automatisée. Elle est sponsorisée par diverses organisations de défense des droits numériques, mais aussi par des grands acteurs du web (Mozilla, Cisco).

A nouveau, mais c'est là un avis tout à fait personnel, on peut regretter que notre vieille Europe soit à nouveau absente du projet et que l'on y retrouve de grands consommateurs de données personnelles comme Google et Facebook.


Comment obtenir un certificat Let's Encrypt?


L’obtention d’un certificat s’effectue à l’aide du protocole ACME (Automatic Certificate Management Environment). Ce dernier permet de vérifier que vous êtes bien le propriétaire du domaine souhaité, principalement en créant un fichier sous la racine de votre site web pour prouver que vous en êtes bien le gestionnaire.

Let’s Encrypt fournit l’ensemble des outils requis mais uniquement pour l’environnement Linux.

Il faut donc se tourner vers des solutions alternatives et plus précisément le projet open source letsencrypt-win-simple.

Vous pouvez récupérer ce dernier sous GitHub:

https://github.com/Lone-Coder/letsencrypt-win-simple
https://github.com/Lone-Coder/letsencrypt-win-simple/releases/download/v1.9.3/letsencrypt-win-simple.V1.9.3.zip

Décompressez le fichier ZIP dans un répertoire de votre serveur web.



Utiliser letsencrypt-win-simple

Attention, l'outil devant avoir accès à la base de méta-données de IIS, au Task Scheduler de Windows ainsi qu'à la racine de vos sites web en lecture/écriture, il est important de démarrer une console en mode administrateur pour l'utiliser correctement.

Tapez simplement:

letsencrypt.exe

L'outil vérifie s'il peut contacter l'Autorité de Certificat et crée un répertoire local sous %appdata% pour y stocker les certificats SSL récupérés.

The global logger has been configured
Let's Encrypt (Simple Windows ACME Client)
Renewal Period: 60
Certificate Store: WebHosting
ACME Server: https://acme-v01.api.letsencrypt.org/
Config Folder: C:\Users\Administrator\AppData\Roaming\letsencrypt-win-simple\htt
psacme-v01.api.letsencrypt.org
Certificate Folder: C:\Users\Administrator\AppData\Roaming\letsencrypt-win-simpl
e\httpsacme-v01.api.letsencrypt.org
Getting AcmeServerDirectory

Entrez une adresse e-mail pour recevoir les alertes en cas d'échec de renouvellement:

Enter an email address (not public, used for renewal fail notices): 

Acceptez les conditions générales d'utilisation:

Calling Register
Do you agree to https://letsencrypt.org/documents/LE-SA-v1.1.1-August-1-2016.pdf
? (y/n)

L'outil va maintenant lister tous les sites web présents sous votre IIS:

Updating Registration
Saving Registration
Saving Signer
Scanning IIS Site Bindings for Hosts
 1: IIS cdn.fkdesign.lu (E:\inetpub\wwwroot\cdn)
 2: IIS blog.fkdesign.lu (E:\inetpub\wwwroot\blog)

 W: Generate a certificate via WebDav and install it manually.
 F: Generate a certificate via FTP/ FTPS and install it manually.
 M: Generate a certificate manually.
 A: Get certificates for all hosts
 Q: Quit
Choose from one of the menu options above:

Entrez l'ID du site que vous souhaitez passer en HTTPS :

Authorizing Identifier cdn.fkdesign.lu Using Challenge Type http-01
Writing challenge answer to E:\inetpub\wwwroot\cdn\.well-known/acme-challenge/G_
TCE_qShjhiU7eMHdn4r6RzM0kUj5TFK-4GdbWENNc
Writing web.config to add extensionless mime type to E:\inetpub\wwwroot\cdn\.wel
l-known\acme-challenge\web.config
Answer should now be browsable at http://cdn.fkdesign.lu/.well-known/ac
me-challenge/G_TCE_qShjhiU7eMHdn4r6RzM0kUj5TFK-4GdbWENNc
Submitting answer
Refreshing authorization
Authorization Result: valid
Deleting answer
Deleting web.config
Deleting E:\inetpub\wwwroot\cdn\.well-known/acme-challenge/
Deleting E:\inetpub\wwwroot\cdn\.well-known
Requesting Certificate
Request Status: Created
Saving Certificate to C:\Users\Administrator\AppData\Roaming\letsencrypt-win-sim
ple\httpsacme-v01.api.letsencrypt.org\cdn.fkdesign.lu-crt.der
Saving Issuer Certificate to C:\Users\Administrator\AppData\Roaming\letsencrypt-
win-simple\httpsacme-v01.api.letsencrypt.org\ca-0A0141420000015385736A0B85ECA708
-crt.pem
Saving Certificate to C:\Users\Administrator\AppData\Roaming\letsencrypt-win-sim
ple\httpsacme-v01.api.letsencrypt.org\cdn.fkdesign.lu-all.pfx
Installing Non-Central SSL Certificate in the certificate store
Opened Certificate Store WebHosting
 Set private key exportable
Set private key exportable
Adding Certificate to Store
Closing Certificate Store
Installing Non-Central SSL Certificate in server software
Adding https Binding
Committing binding changes to IIS
Opened Certificate Store WebHosting
Closing Certificate Store
Adding renewal for IIS cdn.fkdesign.lu (E:\inetpub\wwwroot\cdn)

L'outil va maintenant proposer de créer une nouvelle tâche dans le Task Scheduler pour renouveler automatiquement vos certificats :

Adding renewal for IIS cdn.fkdesign.lu (E:\inetpub\wwwroot\cdn)
Creating Task letsencrypt-win-simple httpsacme-v01.api.letsencrypt.org with Wind
ows Task scheduler at 9am every day.

Do you want to specify the user the task will run as? (y/n)
Renewal Scheduled IIS cdn.fkdesign.lu (E:\inetpub\wwwroot\cdn) Renew After 6/3/2017
Press enter to continue.


Je vous conseille également de cocher l'option "Run whether user is logged on or not" et d'utiliser un compte ayant des droits d'administrateur local :


Vérifier que tout fonctionne

Nous pouvons maintenant vérifier que le certificat a bien été créé dans IIS. Démarrez IIS Manager, cliquer sur le nom de votre serveur Web, puis sur l'icône Server Certificates.




Par défaut, notre site répondait uniquement en HTTP sur le port 80 au nom de domaine cdn.fkdesign.lu. Si vous sélectionnez la racine du site, puis cliquez sur Bindings dans le panneau de droite, vous constaterez que Let's Encrypt a bien ajouté le port 443 utilisé par défaut pour le HTTPS.



Il ne vous reste plus qu'à tester votre site. Si vous désirez que les utilisateurs soient automatiquement redirigés de HTTP vers HTTPS, vous pouvez utiliser le module Url Rewrite de .NET et ajouter la règle suivante dans votre web.config:

<rule name="http to https" stopProcessing="true">
     <match url=".*" />
     <conditions>
     <add input="{HTTPS}" pattern="off" />
     </conditions>
    <action type="Redirect" url="https://{HTTP_HOST}/{R:0}" />
 </rule>






Commentaires