Héberger un site avec IIS et SSL Let's Encrypt sur Windows Server

Héberger un site avec IIS et SSL Let's Encrypt sur Windows Server

Configurez IIS (Internet Information Services) sur votre VPS Windows VeryCloud et sécurisez vos sites avec des certificats SSL gratuits Let's Encrypt via win-acme. Renouvellement automatique inclus.

Introduction

IIS est le serveur web natif de Windows Server. Couplé à win-acme (anciennement letsencrypt-win-simple), il permet d'obtenir et de renouveler automatiquement des certificats SSL gratuits Let's Encrypt, exactement comme Certbot sur Linux.

Prérequis

  • VPS Windows Server 2019/2022/2025
  • Accès Administrateur via RDP
  • Ports 80 et 443 ouverts dans le pare-feu Windows
  • Un nom de domaine pointant vers votre VPS

Étape 1 : Installer IIS

Ouvrez PowerShell en administrateur :

Install-WindowsFeature -Name Web-Server -IncludeManagementTools

Vérifiez l'installation :

Get-Service W3SVC

Le service doit être Running.

Testez en ouvrant un navigateur sur http://localhost depuis le VPS. La page d'accueil IIS doit s'afficher.

Étape 2 : Créer un site

Ouvrez Gestionnaire des services Internet (IIS Manager) : Démarrer → inetmgr.

  1. Clic droit sur Sites → Ajouter un site Web
  2. Nom du site : monsite
  3. Chemin physique : C:\inetpub\monsite
  4. Nom d'hôte : votre-domaine.com
  5. Port : 80
  6. Cochez Démarrer immédiatement

Créez le dossier et un fichier de test :

New-Item -ItemType Directory -Path C:\inetpub\monsite -Force
"<h1>VeryCloud rocks</h1>" | Out-File C:\inetpub\monsite\index.html

Testez : http://votre-domaine.com doit afficher la page.

Étape 3 : Ouvrir les ports 80 et 443

New-NetFirewallRule -DisplayName "HTTP" -Direction Inbound -LocalPort 80 -Protocol TCP -Action Allow
New-NetFirewallRule -DisplayName "HTTPS" -Direction Inbound -LocalPort 443 -Protocol TCP -Action Allow

Étape 4 : Télécharger win-acme

Téléchargez la dernière release de win-acme :

https://github.com/win-acme/win-acme/releases

Récupérez le fichier win-acme.v2.x.x.x.x64.pluggable.zip.

Décompressez dans C:\Program Files\win-acme\.

Étape 5 : Lancer win-acme

Clic droit sur wacs.exeExécuter en tant qu'administrateur.

Menu interactif :

N: Create new certificate (simple for IIS)

Sélectionnez N. win-acme détecte automatiquement tous vos sites IIS.

  1. Sélectionnez le site à protéger (entrez le numéro)
  2. Choisissez Pick bindings manually ou laissez par défaut pour tous les bindings HTTPS
  3. Type de validation : http-01 (par défaut, valide via le port 80)
  4. Email de contact pour Let's Encrypt
  5. Acceptez les CGU
  6. win-acme génère le CSR, valide le domaine, télécharge le certificat et l'installe automatiquement dans IIS

Étape 6 : Vérifier le certificat

Retournez dans IIS Manager :

  • Cliquez sur votre site → Liaisons
  • Vous voyez maintenant un binding https sur le port 443 avec votre certificat

Testez : https://votre-domaine.com doit s'ouvrir avec un cadenas vert.

Étape 7 : Renouvellement automatique

win-acme installe automatiquement une tâche planifiée Windows qui s'exécute chaque jour pour vérifier et renouveler les certificats expirant dans moins de 30 jours.

Vérifiez dans Planificateur de tâches :

  • Cherchez win-acme renew
  • État : Prêt
  • Prochaine exécution : demain

Pour tester manuellement le renouvellement :

& "C:\Program Files\win-acme\wacs.exe" --renew --baseuri "https://acme-v02.api.letsencrypt.org/"

Étape 8 : Forcer le HTTPS (redirection 301)

Dans IIS Manager, sélectionnez votre site → Rewrite URL (à installer si manquant).

Sinon, modifiez web.config à la racine du site :

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="HTTPS Redirect" stopProcessing="true">
          <match url="(.*)" />
          <conditions>
            <add input="{HTTPS}" pattern="off" />
          </conditions>
          <action type="Redirect" url="https://{HTTP_HOST}/{R:1}"
                  redirectType="Permanent" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

Si Rewrite URL n'est pas installé :

Install-Module -Name PSWindowsUpdate -Force
# Puis téléchargez et installez : https://www.iis.net/downloads/microsoft/url-rewrite

Étape 9 : Activer HTTP/2 et TLS 1.3

HTTP/2 est activé par défaut sur Windows Server 2019+. Vérifiez avec ssllabs.com/ssltest.

Pour activer TLS 1.3 (Windows Server 2022/2025 uniquement) :

# Activer TLS 1.3
$tls13Path = "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3"
New-Item -Path "$tls13Path\Server" -Force
New-ItemProperty -Path "$tls13Path\Server" -Name "Enabled" -Value 1 -PropertyType DWORD -Force
New-ItemProperty -Path "$tls13Path\Server" -Name "DisabledByDefault" -Value 0 -PropertyType DWORD -Force

Redémarrez :

shutdown /r /t 0

Dépannage

"The HTTP request failed validation"

Let's Encrypt n'arrive pas à valider votre domaine via le port 80. Vérifiez :

  1. Le DNS pointe bien vers votre IP : nslookup votre-domaine.com
  2. Le port 80 est ouvert dans le pare-feu Windows ET dans Netrix (espace client VeryCloud)
  3. Aucun autre service ne tourne sur le port 80

"Certificate request failed"

Lisez les logs détaillés :

Get-Content "C:\ProgramData\win-acme\acme-v02.api.letsencrypt.org\log\*.log" -Tail 100

Binding HTTPS manquant après renouvellement

Lancez manuellement :

& "C:\Program Files\win-acme\wacs.exe"
# Choisissez "Manage renewals" puis votre site

Commandes utiles

# Statut IIS
Get-Service W3SVC

# Redémarrer IIS
iisreset

# Lister tous les sites
Get-IISSite

# Lister les liaisons HTTPS
Get-IISSiteBinding

# Renouveler tous les certificats win-acme
& "C:\Program Files\win-acme\wacs.exe" --renew

# Voir les certificats installés
Get-ChildItem Cert:\LocalMachine\WebHosting

Conclusion

Votre VPS Windows héberge maintenant des sites web professionnels avec HTTPS automatique. IIS reste un excellent serveur web sur Windows, particulièrement pour les stacks .NET, mais aussi pour héberger des sites statiques, PHP ou Node.js (via iisnode).

Pour aller plus loin :

  • Hébergez plusieurs sites avec leurs propres certificats SNI
  • Installez ARR (Application Request Routing) pour faire du reverse proxy vers Node.js / Python
  • Utilisez Cloudflare devant IIS pour la performance globale

Ressources

Rejoignez notre serveur communautaire Discord

Pour toute question, suggestion ou simplement pour discuter avec la communauté, rejoignez-nous sur Discord !

900+Membres