Comment configurer SSL sur IIS 7 ou version ultérieure

par Saad Ladki

Introduction

Les étapes de configuration du protocole SSL (Secure Sockets Layer) pour un site sont identiques dans IIS 7 et versions ultérieures et IIS 6.0, et incluent les éléments suivants :

  • Obtenez un certificat approprié.
  • Créez une liaison HTTPS sur un site.
  • Testez en effectuant une demande au site.
  • Si vous le souhaitez, configurez les options SSL, c’est-à-dire en effectuant une exigence SSL.

Ce document fournit des informations de base sur SSL, puis montre comment activer SSL de la manière suivante :

  • Utilisation du Gestionnaire IIS.
  • Utilisation de l’outil en ligne de commande AppCmd.exe.
  • Par programmation via Microsoft.Web.Administration.
  • Utilisation de scripts WMI.

Cet article contient les sections suivantes :

Configuration SSL

Que vous exécutiez votre site web sur votre propre serveur ou dans le cloud, l’utilisation de SSL pour sécuriser votre site est probablement extrêmement importante pour vous, car de nombreux sites web s’y tournent pour protéger la confidentialité de l’utilisateur. Si vous devez configurer SSL sur votre serveur, il est important de se rendre compte que l’implémentation de SSL est passée d’IIS 6.0 à IIS 7 et versions ultérieures. Dans IIS 6.0 sur Windows Server 2003, toutes les configurations SSL ont été stockées dans la métabase IIS, et le chiffrement/déchiffrement s’est produit en mode Utilisateur (nécessitant un grand nombre de transitions en mode noyau/mode utilisateur). Dans IIS 7 et versions ultérieures, HTTP.sys gère le chiffrement/déchiffrement SSL en mode noyau, ce qui permet d’obtenir jusqu’à 20 % de meilleures performances pour les connexions sécurisées dans IIS 7 et versions ultérieures que celles rencontrées dans IIS 6.0.

L’utilisation du protocole SSL en mode noyau nécessite le stockage d’informations de liaison SSL à deux emplacements. Tout d’abord, la liaison est stockée dans %windir%\System32\inetsrv\config\applicationHost.config pour votre site. Au démarrage du site, IIS envoie la liaison à HTTP.sys et HTTP.sys commence à écouter les requêtes sur l’adresse IP:Port spécifiée (cela fonctionne pour toutes les liaisons). Deuxièmement, la configuration SSL associée à la liaison est stockée dans la configuration HTTP.sys. Utilisez la commande netsh à une invite de commandes pour afficher la configuration de liaison SSL stockée dans HTTP.sys comme dans l’exemple suivant :

netsh http show sslcert

Lorsqu’un client se connecte et lance une négociation SSL, HTTP.sys recherche dans sa configuration SSL la paire IP:Port à laquelle le client est connecté. La configuration SSL HTTP.sys doit inclure un hachage de certificat et le nom du magasin de certificats avant que la négociation SSL réussisse.

Conseil de résolution des problèmes : Si vous rencontrez des problèmes avec une liaison SSL, vérifiez que la liaison est configurée dans ApplicationHost.config et que le magasin HTTP.sys contient un hachage de certificat et un nom de magasin valides pour la liaison.

Choix d’un certificat

Lorsque vous choisissez un certificat, tenez compte des éléments suivants : voulez-vous que les utilisateurs finaux puissent vérifier l’identité de votre serveur avec votre certificat ? Si c’est le cas, créez une demande de certificat et envoyez-la à une autorité de certification connue, telle que VeriSign ou GeoTrust, ou obtenez un certificat auprès d’une autorité de certification en ligne dans votre domaine intranet. Il existe trois éléments qu’un navigateur vérifie généralement dans un certificat de serveur :

  1. La date/heure actuelle est dans la plage de dates « Valide à partir du » et « Valide jusqu’au » sur le certificat.
  2. Le « nom commun » (CN) du certificat correspond à l’en-tête de l’hôte dans la requête. Par exemple, si le client adresse une requête à https://www.contoso.com/, le nom commun doit être www.contoso.com.
  3. Que l’émetteur du certificat est une autorité de certification connue et approuvée.

Si une ou plusieurs de ces vérifications échouent, le navigateur invite l’utilisateur à afficher des avertissements. Si vous disposez d’un site Internet ou d’un site intranet où vos utilisateurs finaux ne sont pas des personnes que vous connaissez personnellement, vous devez toujours vous assurer que ces trois paramètres sont valides.

Les certificats auto-signés sont des certificats créés sur votre ordinateur. Ils sont utiles dans les environnements où il n’est pas important qu’un utilisateur final approuve votre serveur, tel qu’un environnement de test.

Avec AppCmd

Vous ne pouvez pas demander ou créer un certificat à l’aide de AppCmd.exe. Vous ne pouvez pas également utiliser AppCmd.exe pour créer une liaison SSL.

Configurer les paramètres SSL

Vous pouvez utiliser AppCmd.exe pour configurer un site pour accepter uniquement les connexions HTTPS du serveur en modifiant l’attribut sslFlags dans la section Accès. Par exemple, vous pouvez configurer ce paramètre pour le « site web par défaut » dans le fichier ApplicationHost.config (par exemple, commitPath:APPHOST) à l’aide de la commande suivante :

%windir%\system32\inetsrv>AppCmd set config "Default Web Site" -commitPath:APPHOST -section:access -sslFlags:Ssl

Si elle réussit, le message suivant s’affiche :

Applied configuration changes to section "system.webServer/security/access" for "MACHINE/WEBROOT/APPHOST/Default Web Site" at configuration commit path "MACHINE/WEBROOT/APPHOST"

Remarque

Pour exiger un protocole SSL 128 bits, remplacez la valeur sslFlags par ssl128.

L’exemple suivant montre comment afficher les paramètres de section <accès/> pour le site web par défaut. L’attribut sslFlags a été correctement défini.

%windir%\system32\inetsrv>AppCmd list config "Default Web Site" -section:access

L’exécution de la commande entraîne l’entrée suivante dans le fichier ApplicationHost.config :

<system.webServer>
  <security>
    <access flags="Script, Read" sslFlags="Ssl" />
  </security>
</system.webServer>

Utilisation de WMI

Vous ne pouvez pas demander ou créer un certificat à l’aide de l’espace de noms WMI WebAdministration.

Créer une liaison SSL

Le script suivant montre comment créer une liaison SSL et comment ajouter la configuration appropriée pour HTTP.sys et IIS :

Set oIIS = GetObject("winmgmts:root\WebAdministration")
'''''''''''''''''''''''''''''''''''''''''''''
' CREATE SSL BINDING
'''''''''''''''''''''''''''''''''''''''''''''

oIIS.Get("SSLBinding").Create _ 
   "*", 443, "4dc67e0ca1d9ac7dd4efb3daaeb15d708c9184f8", "MY"
'''''''''''''''''''''''''''''''''''''''''''''
' ADD SSL BINDING TO SITE
'''''''''''''''''''''''''''''''''''''''''''''

Set oBinding = oIIS.Get("BindingElement").SpawnInstance_
oBinding.BindingInformation = "*:443:"
oBinding.Protocol = "https"

Set oSite = oIIS.Get("Site.Name='Default Web Site'")
arrBindings = oSite.Bindings

ReDim Preserve arrBindings(UBound(arrBindings) + 1)
Set arrBindings(UBound(arrBindings)) = oBinding

oSite.Bindings = arrBindings
Set oPath = oSite.Put_

Remarque

Le hachage et le magasin de certificats doivent référencer un certificat fonctionnel réel sur votre serveur. Si le nom du hachage et/ou du magasin du certificat est incorrect, une erreur est retournée.

Configurer les paramètres SSL

Le script suivant montre comment définir des paramètres SSL à l’aide du fournisseur WMI IIS. Vous trouverez cette valeur dans le fichier IIS_Schema.xml.

CONST SSL = 8  
Set oIIS = GetObject("winmgmts:root\WebAdministration")  
Set oSection = oIIS.Get(\_  
 "AccessSection.Path='MACHINE/WEBROOT/APPHOST',Location='Default Web Site'")  
oSection.SslFlags = oSection.SslFlags OR SSL  
oSection.Put\_ <a id="IISManager"></a>

Gestionnaire des services Internet

obtenir un certificat

Sélectionnez le nœud de serveur dans l’arborescence, puis double-cliquez sur la fonctionnalité Certificats de serveur dans la vue de liste :
Screenshot of the ALEXIS E 3 L H server node Home with Server Certificates selected.

Cliquez sur Créer un certificat auto-signé... dans le volet Actions.
Screenshot of the Server Certificates Actions pane with Create SelfSigned Certificate emphasized.

Entrez un nom convivial pour le nouveau certificat, puis cliquez sur OK.

Vous disposez maintenant d’un certificat auto-signé. Le certificat est marqué pour l’utilisation de l’authentification du serveur ; autrement dit, il utilise comme certificat côté serveur pour le chiffrement SSL HTTP et pour authentifier l’identité du serveur.

Créer une liaison SSL

Sélectionnez un site dans l’arborescence, puis cliquez sur Liaisons... dans le volet Actions. Cela affiche l’éditeur de liaisons qui vous permet de créer, de modifier et de supprimer des liaisons pour votre site Web. Cliquez sur Ajouter... pour ajouter votre nouvelle liaison SSL au site.

Screenshot of the Site Bindings dialog with one the default site binding.

Les paramètres par défaut d’une nouvelle liaison sont définis sur HTTP sur le port 80. Sélectionnez https dans la liste déroulante Type. Sélectionnez le certificat auto-signé que vous avez créé dans la section précédente dans la liste déroulante certificat SSL, puis cliquez sur OK.

Screenshot of the Add Site Binding dialog with Type set to H T T P S and S S L certificate set to Test certificate.

Vous disposez maintenant d’une nouvelle liaison SSL sur votre site et tout ce qui reste est de vérifier qu’elle fonctionne.
Screenshot of the Site Binding dialog with both the H T T P and H T T P S bindings.

Vérifier la liaison SSL

Dans le volet Actions, sous Parcourir le site web, cliquez sur le lien associé à la liaison que vous venez de créer.
Screenshot of the Browse Web Site section of the Actions pane with Browse asterisk colon 443 or H T T P S emphasized.

Internet Explorer (Internet Explorer) 7 et versions ultérieures affiche une page d’erreur, car le certificat auto-signé a été émis par votre ordinateur, et non par une autorité de certification approuvée. Internet Explorer 7 et versions ultérieures approuve le certificat si vous l’ajoutez à la liste des autorités de certification racines approuvées dans les certificats le stockent sur l’ordinateur local ou dans la stratégie de groupe pour le domaine. Cliquez sur Poursuivre sur ce site Web (non recommandé).
Screenshot of internet explorer displaying a security certificate error. Continue to this website (not recommended) is emphasized.

Configurer les paramètres SSL

Configurez les paramètres SSL si vous souhaitez que votre site nécessite SSL, ou interagissez de manière spécifique avec les certificats clients. Cliquez sur le nœud de site dans l’arborescence pour revenir à la page d’accueil du site. Double-cliquez sur la fonctionnalité paramètres SSL dans le volet central.

Screenshot of the S S L Settings pane requiring S S L and ignoring Client certificates.

Résumé

Dans cette procédure pas à pas, nous avons utilisé l’outil en ligne de commande AppCmd.exe, le fournisseur de scripts WMI et le Gestionnaire IIS pour configurer SSL sur IIS.