Installation d’IIS sans composants inutiles
Via le gestionnaire de serveur : Ajouter des rôles et des fonctionnalités → Basé sur les rôles → Votre serveur → Serveur Web (IIS).
Sélectionnez le minimum pour les sites Web statiques et simples :
- Serveur Web → Fonctionnalités HTTP générales : Contenu statique, document par défaut, erreurs HTTP ;
- Intégrité et diagnostic : Journalisation HTTP ;
- Sécurité : filtrage des requêtes ;
- Performances : compression du contenu statique.
Si vous avez besoin d’ASP.NET, ajoutez Développement d’applications (.NET extensible, ASP.NET, ISAPI).
Commandes PowerShell correspondantes :
Install-WindowsFeature Web-Server, Web-Common-Http, Web-Default-Doc, Web-Http-Errors, `
Web-Http-Logging, Web-Filtering, Web-Stat-Compression -IncludeManagementTools
# If necessary:
# Install-WindowsFeature Web-Asp-Net45, Web-Net-Ext45, Web-ISAPI-Ext, Web-ISAPI-Filter
Vérifiez http://localhost – la page d’accueil IIS devrait s’afficher.
Générez une CSR (demande de certificat) directement dans IIS
Ouvrez le gestionnaire IIS (InetMgr.exe) → sélectionnez votre serveur → Certificats de serveur.
Sous Actions, cliquez sur Créer une demande de certificat… et remplissez les champs pour le nom distinctif :
— Nom commun — FQDN du site web (par exemple, example.ru ou *.example.ru pour un caractère générique) ;
— Organisation/OU/Ville/État/Pays — conformément aux exigences de l’autorité de certification (CA).
Sélectionnez un fournisseur de cryptographie et une longueur de clé (Microsoft RSA SChannel et 2048+ bits sont recommandés).
Enregistrez la CSR dans un fichier – elle commence par —–BEGIN NEW CERTIFICATE REQUEST—–.
Envoyez la CSR à votre autorité de certification (commerciale ou interne à l’entreprise). Si vous utilisez AD CS, téléchargez le certificat émis depuis le portail Web de l’autorité de certification.
Alternative pour les tests : certificat auto-signé via PowerShell New-SelfSignedCertificate. Convient aux environnements de test, mais pas aux sites de production.
Importation d’un certificat dans IIS (CER/PFX) et nuances de format
Revenez à Certificats de serveur et cliquez sur Terminer la demande de certificat… – indiquez le CER émis.
Si vous disposez de CRT + KEY, convertissez-les d’abord en PFX (un conteneur combiné avec une clé privée). Le plus simple est d’utiliser openssl :
openssl pkcs12 -export -out target.pfx -inkey source.key -in source.crt
Ou convertissez temporairement CRT → CER (Base-64 X.509) directement dans Windows via « Exporter » :
Si vous importez PFX, il est préférable de le faire via le composant logiciel enfichable Certificats (ordinateur local) → Personnel. Microsoft fournit des instructions détaillées sur l’importation et l’attribution d’un certificat de site dans sa documentation officielle.
Une fois la demande de certificat terminée, le nouveau certificat apparaît dans la liste :
Lier HTTPS au site web (liens)
Allez dans Sites web, sélectionnez le site web → Modifier les liens…
Ajoutez une liaison :
- Type : https
- Adresse IP : Toutes les adresses non attribuées (ou spécifiques)
- Port : 443
- Nom d’hôte : Le nom de domaine complet (FQDN) de votre site Web
- Certificat SSL : Sélectionnez le certificat importé
Pour plusieurs sites Web HTTPS sur une seule adresse IP, activez SNI (Require Server Name Indication).
Redémarrez le site Web (ou l’ensemble de l’IIS).
Vérifiez dans votre navigateur : le cadenas et le certificat valide pour le domaine.
Il est judicieux d’activer immédiatement la redirection HTTP → HTTPS (réécriture d’URL) – une analyse séparée est disponible à ce sujet dans winitpro.
Ouvrez les ports et testez depuis l’extérieur
N’oubliez pas d’ouvrir les ports 80/443 dans le pare-feu Windows interne et le pare-feu/ACL externe chez le fournisseur Windows VPS :
New-NetFirewallRule -DisplayName "HTTP (80)" -Direction Inbound -Protocol TCP -LocalPort 80 -Action Allow
New-NetFirewallRule -DisplayName "HTTPS (443)" -Direction Inbound -Protocol TCP -LocalPort 443 -Action Allow
Vérification à partir de l’ordinateur client :
Test-NetConnection example.ru -Port 80
Test-NetConnection example.ru -Port 443
TcpTestSucceeded : True – Liaison et disponibilité confirmées.
Erreurs courantes et solutions rapides
- Le certificat n’apparaît pas dans la liste déroulante « Liaisons » – il a été importé dans « Utilisateur actuel » au lieu de « Ordinateur local → Personnel » ou sans clé privée. Importez PFX dans « Ordinateur local ».
- NET::ERR_CERT_COMMON_NAME_INVALID – CN/SAN ne correspond pas au domaine dans le nom d’hôte ; réémettez avec le FQDN correct.
- Seul HTTP s’ouvre – aucune liaison HTTPS ou 443 n’est fermé sur le pare-feu externe.
- Erreur lors de l’importation de CRT – convertissez en CER ou PFX (voir ci-dessus).
- Plusieurs sites Web sur une seule adresse IP – Activez SNI dans la liaison et utilisez des noms d’hôte différents.
Aide-mémoire : IIS + site Web + HTTPS en quelques minutes
# 1) Installing IIS with basic modules
Install-WindowsFeature Web-Server, Web-Common-Http, Web-Default-Doc, Web-Http-Errors, `
Web-Http-Logging, Web-Filtering, Web-Stat-Compression -IncludeManagementTools
# 2) Site catalog
New-Item -ItemType Directory -Path "D:\sites\example.ru\wwwroot" -Force | Out-Null
# 3) Website on HTTP
Import-Module WebAdministration
New-Website -Name "example.ru" -Port 80 -PhysicalPath "D:\sites\example.ru\wwwroot" -IPAddress "*" -HostHeader "example.ru"
# 4) Import certificate (example for PFX; specify your path/password)
# $pwd = ConvertTo-SecureString "PFXpassword" -AsPlainText -Force
# Import-PfxCertificate -FilePath "C:\certs\example.pfx" -CertStoreLocation Cert:\LocalMachine\My -Password $pwd
# $thumb = (Get-ChildItem Cert:\LocalMachine\My | Where-Object {$_.Subject -like "*CN=example.ru*"}).Thumbprint
# 5) HTTPS binding (via netsh http)
# New-WebBinding -Name "example.ru" -Protocol https -Port 443 -HostHeader "example.ru"
# netsh http add sslcert hostnameport=example.ru:443 certhash=$thumb appid="{00112233-4455-6677-8899-AABBCCDDEEFF}"
# 6) Firewall
New-NetFirewallRule -DisplayName "HTTP (80)" -Direction Inbound -Protocol TCP -LocalPort 80 -Action Allow
New-NetFirewallRule -DisplayName "HTTPS (443)" -Direction Inbound -Protocol TCP -LocalPort 443 -Action Allow