Partager via


Gestion des échecs de liaison d’URL dans IIS Express

Auteur Vaidy Gopalakrishnan

Vue d’ensemble

IIS Express a été conçu pour permettre l’exécution des tâches de développement et de test web les plus courantes sans privilèges administratifs. Par exemple, vous pouvez exécuter localement un site Web en utilisant un port non réservé. Vous pouvez également tester votre site Web avec SSL à l’aide d’un certificat de test auto-signé et d’un port de la plage 44300 à 44399. Pour plus d'informations, reportez-vous à la section Exécution d'IIS Express sans privilèges administratifs.

Toutefois, vous devrez peut-être utiliser parfois IIS Express pour les scénarios de test qui ne sont pas activés par défaut. Par exemple, bien qu'IIS Express ne soit pas conçu pour être un serveur Web de production comme IIS, vous aurez peut-être besoin de tester l'accès externe à votre site Web. De même, vous pouvez tester votre site à l’aide de SSL ou d’un numéro de port réservé spécifique.

Si vous utilisez IIS Express pour tester ces scénarios, il signale par défaut un échec de la liaison URL. Cela se produit parce que IIS Express n’a pas suffisamment de privilèges pour effectuer ces types de tâches. Vous pouvez exécuter IIS Express en tant qu'administrateur pour contourner ces restrictions. Cependant, pour des raisons de sécurité, il ne s’agit pas d’une bonne pratique.

La meilleure façon de tester IIS Express dans ces scénarios consiste à configurer HTTP.sys pour permettre à IIS Express d'exécuter les tâches avec les autorisations standard. Une fois les tests terminés, vous pouvez rétablir la configuration. Pour des raisons de sécurité, ces tâches sont limitées aux administrateurs et ne peuvent pas être effectuées par les utilisateurs standard (non-administrateurs).

À propos de HTTP.sys

HTTP.sys est un composant de système d’exploitation qui gère le trafic HTTP et SSL pour IIS et IIS Express. HTTP.sys empêche par défaut les applications (notamment IIS Express) d'effectuer les opérations suivantes si l'application est exécutée par un utilisateur standard :

  • Utilisation de ports réservés tels que 80 ou 443
  • Service du trafic externe
  • Utilisation de SSL

Vous pouvez configurer HTTP.sys pour que ces opérations puissent être effectuées dans le cadre d'IIS Express. Sur Windows 7 et Windows Vista, vous pouvez configurer HTTP.sys à l’aide de l’utilitaire netsh.exe. Sur Windows XP, HTTP.sys pouvez être configuré à l’aide de l’utilitaire de ligne de commande httpcfg.exe , qui est inclus dans les outils de support de Windows XP Service Pack 2.

Utilisation d’un port réservé

Vous pouvez utiliser IIS Express par défaut pour faire fonctionner votre site Web en utilisant un port non réservé tel que 8080. Toutefois, l'utilisation d'un port réservé tel que 80 ou 443 nécessite du travail. Dans les étapes ci-dessous, l’on imagine que vous souhaitez prendre en charge le trafic local sur le port 80.

Sous Windows 7 ou Windows Vista, à partir d'une invite de commande avec élévation de privilèges, exécutez la commande suivante :

netsh http add urlacl url=http://localhost:80/ user=everyone

Cette commande permettra à toute application d'utilisateur (y compris vos propres instances IIS Express) de fonctionner sur le port 80 sans nécessiter de privilèges administratifs. Pour limiter cet accès à vous-même, remplacez « tout le monde » par votre identité Windows.

Sous Windows XP, exécutez la commande suivante à partir d'une invite de commande avec élévation de privilèges :

httpcfg set urlacl /u http://localhost:80/ /a D:(A;;GX;;;WD)

Après avoir configuré HTTP.sys, vous pouvez configurer votre site Web pour utiliser le port 80. Cela est très simple à réaliser en utilisant des outils comme WebMatrix et Visual Studio 2010 SP1 Beta. Vous pouvez également modifier manuellement le fichier applicationhost.config pour inclure la liaison suivante dans l'élément sites.

<binding protocol="http" bindingInformation="*:80:localhost"/>

Votre site Web s'exécutera désormais (localement) en utilisant le port 80.

Lorsque vous avez fini de tester votre application, vous devez rétablir HTTP.sys à ses paramètres antérieurs.

Sur Windows 7 ou Windows Vista, exécutez la commande suivante à partir d’une invite de commandes avec élévation de privilèges :

netsh http delete urlacl url=http://localhost:80/

Sur Windows XP, exécutez la commande suivante à partir d’une invite avec élévation de privilèges :

httpcfg delete urlacl /u http://localhost:80/

Service du trafic externe

Pour permettre à votre site Web de servir le trafic externe, vous devez configurer HTTP.sys et le pare-feu de votre ordinateur. Les étapes décrites ci-dessous reposent sur l'hypothèse que le trafic externe sera servi sur le port 8080.

Les étapes de la configuration de HTTP.sys pour le trafic externe sont similaires à la configuration d'un site pour l'utilisation d'un port réservé. Sous Windows 7 ou Windows Vista, à partir d'une invite de commande avec élévation de privilèges, exécutez la commande suivante :

netsh http add urlacl url=http://myhostname:8080/ user=everyone

Sous Windows 7 ou Windows Vista, à partir d'une invite de commande élevée, exécutez la commande suivante :

httpcfg set urlacl /u http://myhostname:8080/ /a D:(A;;GX;;;WD)

Une fois HTTP.sys configuré, vous pouvez configurer IIS Express pour utiliser le port 80 à l'aide de WebMatrix ou de Visual Studio 2010 SP1 Beta, ou en modifiant le fichier applicationhost.config afin d'inclure la liaison suivante dans l'élément sites. (Remplacez myhostname par le nom de domaine de votre ordinateur).

<binding protocol="http" bindingInformation="*:8080:myhostname"/>

Vous devez également configurer le pare-feu pour autoriser le trafic externe à circuler via le port 8080. Les étapes varient selon le pare-feu que vous utilisez ; elles ne sont donc pas décrites ici.

Une fois que vous avez fini de tester votre application, rétablissez les paramètres antérieurs de HTTP.sys.

Sur Windows 7 ou Windows Vista, exécutez la commande suivante à partir d’une invite de commandes avec élévation de privilèges :

netsh http delete urlacl url=http://myhostname:8080/

Sur Windows XP, exécutez la commande suivante à partir d’une invite avec élévation de privilèges :

httpcfg delete urlacl /u http://myhostname:8080/

Utilisation d’un port SSL personnalisé

Si vous souhaitez tester l'accès SSL à votre site, vous pouvez le faire avec IIS Express en utilisant un port SSL entre 44300 et 44399 et le certificat auto-signé d'IIS Express. Le fait d’essayer d'utiliser SSL avec un port en dehors de cette plage entraîne un échec de la liaison URL lorsque le site web est lancé sous IIS Express.

Pour obtenir des instructions générales sur la manière de configurer HTTP.sys afin qu'il prenne en charge le protocole SSL, reportez-vous à Méthode de configuration d’un port avec un certificat SSL. Imaginons par exemple que vous souhaitiez tester votre site Web à l'aide de l'URL https://localhost:443.

Tout d'abord, déterminez l'empreinte SHA1 du certificat auto-signé d'IIS Express. Cette empreinte est différente pour chaque ordinateur, car le programme d'installation d'IIS Express génère un nouveau certificat lorsqu'il est exécuté. Vous pouvez déterminer l'empreinte SHA1 à l'aide du snap-in Certificat de la Microsoft Management Console (MMC) en consultant le magasin de certificats personnels de l'ordinateur. Vous pouvez également utiliser l'utilitaire .NET CertMgr.exe comme indiqué ci-dessous. À partir d'une invite de commande, tapez la commande suivante.

certmgr.exe /c /s /r localMachine MY

Cette commande affiche des informations relatives à tous les certificats du magasin de certificats personnel de l’ordinateur local. Recherchez « Certificat de développement IIS Express » dans le résultat pour localiser le certificat auto-signé IIS Express, puis notez son empreinte SHA1.

Configurez ensuite HTTP.sys pour associer le certificat auto-signé à l’URL. Sous Windows 7 ou Windows Vista, créez d'abord un UUID unique à l'aide de uuidgen.exe ou d'un autre outil. Exécutez ensuite la commande suivante à partir d’une invite avec élévation de privilèges, en passant l’empreinte numérique au paramètre certhash. (Excluez les espaces lorsque vous spécifiez l’empreinte numérique.)

netsh http add sslcert ipport=0.0.0.0:443 certhash=<thumbprint> appid={00112233-4455-6677-8899-AABBCCDDEEFF}

Pour le paramètre appid, indiquez l'UUID unique que vous avez créé précédemment.

Sur Windows XP, exécutez la commande suivante à partir d’une invite avec élévation de privilèges.

httpcfg set ssl -i 0.0.0.0:443 -h <thumbprint>

Étant donné que 443 est un port réservé, vous devez également configurer HTTP.sys pour permettre à IIS Express de l’utiliser lors de son exécution en tant qu’utilisateur standard. Pour plus d’informations, consultez la section Utilisation d’un port réservé. Vous n’aurez pas besoin d’effectuer cette étape si vous utilisez un port SSL personnalisé non réservé tel que 44500.

Sur Windows 7 ou Windows Vista, exécutez la commande suivante à partir d’une invite avec élévation de privilèges.

netsh http add urlacl url=https://localhost:443/ user=everyone

Sur Windows XP, exécutez la commande suivante à partir d’une invite avec élévation de privilèges.

httpcfg set urlacl /u https://localhost:443/ /a D:(A;;GX;;;WD)

Après avoir configuré HTTP.sys, configurez votre site Web pour utiliser le port SSL personnalisé à l’aide de WebMatrix ou Visual Studio 2010 SP1 Beta, ou en ajoutant la liaison suivante dans l’élément sites du fichier applicationhost.config.

<binding protocol="https" bindingInformation="*:443:localhost"/>

Une fois que vous avez terminé de tester votre site Web, rétablissez les paramètres précédents de HTTP.sys. Sur Windows 7 ou Windows Vista, exécutez les commandes suivantes à partir d’une invite avec élévation de privilèges :

netsh http delete sslcert ipport=0.0.0.0:443
netsh http delete urlacl url=https://localhost:443/

Sur Windows XP, exécutez les commandes suivantes à partir d’une invite avec élévation de privilèges :

httpcfg delete ssl –i 0.0.0.0:443
httpcfg delete urlacl /u https://localhost:443/

Utilisation d’un certificat SSL personnalisé

La configuration d'un certificat SSL personnalisé est très semblable à l'utilisation d'un port SSL personnalisé. Les étapes décrites dans cette section reposent sur l'hypothèse que votre site Web dessert déjà le trafic SSL local en utilisant le port 44300 et le certificat auto-signé d'IIS Express.

Vous devez tout d'abord installer le certificat SSL personnalisé sur votre ordinateur. Utilisez le composant logiciel enfichable certificat MMC ou CertMgr.exe. Lors de l'installation de votre certificat, notez la valeur de l'empreinte SHA1.

L’URL https://localhost:44300 est préconfigurée par le programme d’installation IIS Express pour utiliser un certificat auto-signé. Pour lier cette URL à votre certificat personnalisé, vous devez supprimer l’association existante. Ignorez cette étape si votre combinaison de noms d’hôte et de port n’est pas associée à un certificat SSL.

Sur Windows 7 ou Windows Vista, exécutez la commande suivante à partir d’une invite avec élévation de privilèges :

netsh http delete sslcert ipport=0.0.0.0:44300

Sur Windows XP, exécutez la commande suivante à partir d’une invite avec élévation de privilèges :

httpcfg delete ssl –i 0.0.0.0:44300

Les autres étapes sont semblables à celles de la configuration d'un port SSL personnalisé. Créez un UUID unique à l’aide de uuidgen.exe ou d’un autre outil.

Sous Windows 7 ou Windows Vista, exécutez la commande suivante à partir d'une invite avec élévation de privilèges, en indiquant l'empreinte de vos certificats personnalisés (après avoir supprimé les espaces) dans le paramètre certhash et en indiquant votre UUID.

netsh http add sslcert ipport=0.0.0.0:44300 certhash=<thumbprint> appid={00112233-4455-6677-8899-AABBCCDDEEFF}

Sur Windows XP, exécutez la commande suivante à partir d’une invite avec élévation de privilèges.

httpcfg set ssl -i 0.0.0.0:44300 -h <thumbprint>

Résumé

Cet article explique les étapes nécessaires à la prise en charge de certains scénarios pour IIS Express qui ne sont pas activés par défaut. Pour les exécuter, il faut être un administrateur. Même si vous ne disposez pas de privilèges administratifs, vous pouvez toujours effectuer les tâches de conception et de développement Web les plus courantes avec IIS Express en tant qu'utilisateur standard.