web-dev-qa-db-fra.com

Connexion SSL / réinitialisation de la connexion avec IISExpress

J'utilise pour la première fois le nouveau Visual Studio 2013 avec IISExpress (serveur de développement ASP.net précédemment utilisé sur VS2010). Je rencontre des problèmes en essayant de déboguer mon projet.

Voici ce que je vois dans Chrome:

Impossible d'établir une connexion sécurisée au serveur. Cela peut être un problème avec le serveur ou peut nécessiter un certificat d'authentification client que vous n'avez pas. Code d'erreur: ERR_SSL_PROTOCOL_ERROR

J'ai mis à jour mon fichier de propriétés -> web afin que l'URL du projet utilise maintenant une URL https. Cependant, après cela, je reçois maintenant une nouvelle erreur lors du lancement:

La connexion à localhost a été interrompue. Code d'erreur: ERR_CONNECTION_RESET

Merci

119
Kevin

Si vous utilisez URLRewrite pour forcer les connexions SSL dans votre web.config, il est probablement en train de réécrire votre adresse localhost pour forcer https. Si le débogage avec SSL activé n'est pas important pour vous et que vous utilisez URLRewrite, envisagez d'ajouter <add input="{HTTP_Host}" pattern="localhost" negate="true" /> dans la section de réécriture de votre fichier web.config. Cela arrêtera la réécriture pour toutes les adresses d'hôte local mais le laissera en place dans un environnement de production. Si vous n'utilisez pas URLRewrite ou si vous avez besoin de déboguer avec SSL, http://www.hanselman.com/blog/WorkingWithSSLAtDevelopmentTimeIsEasierWithIISExpress.aspx peut vous aider. C'est pour VS2010, mais cela devrait aussi suffire pour VS2013.

39
djroedger

J'avais ERR_CONNECTION_RESET parce que mon application configurée pour Visual Studio 2013/IIS Express numéro de port n'était PAS dans la plage : 44300-: 44398. (Je ne me souviens pas d'avoir ignoré les avertissements pour obtenir une sortie de cette plage.) Changer le numéro de port pour une valeur dans cette plage est tout ce que j'avais à faire pour que cela fonctionne. .

J'ai remarqué cela après avoir examiné la sortie netsh http show sslcert > sslcert.txt et un clic avec des éléments que j'ai lus récemment au sujet des numéros de port.

310
Jason Kleban

Assurez-vous de supprimer tous les certificats 'localhost' précédents, car ils pourraient entrer en conflit avec celui généré par IIS Express. J'ai eu cette même erreur (ERR_SSL_PROTOCOL_ERROR), et il m'a fallu de nombreuses heures pour le résoudre finalement après avoir essayé de nombreuses "solutions". Mon erreur est que j'ai créé mon propre certificat 'localhost' et qu'il y en avait deux. Je devais supprimer les deux et faire en sorte que IIS Express le recrée.

Voici comment vérifier et supprimer le certificat 'localhost':

  • Au démarrage, tapez -> mmc.exe
  • Fichier -> Ajouter/Supprimer un composant logiciel enfichable ...
  • Sélectionnez Certificats -> Ajouter> -> Compte d'ordinateur -> Ordinateur local
  • Vérifiez sous Certificats> Personnel> Certificats
  • Assurez-vous que le certificat localhost existant porte un nom convivial "Certificat de développement IIS Express". Sinon, supprimez-le. Ou si plusieurs, supprimez tout.

Sous Visual Studio, sélectionnez projet et, dans l’onglet Propriétés, activez SSL = true. Sauvegarder, construire et exécuter. IIS Express générera un nouveau certificat 'localhost'.

Remarque: Si cela ne fonctionne pas, essayez les solutions suivantes: veillez à désactiver IIS Express sur le projet VS et à arrêter toutes les applications en cours d'exécution sur celle-ci avant de supprimer le certificat 'localhost'. De plus, vous pouvez aller à 'Panneau de configuration> Programmes' et à Réparer IIS Express.

77
ShaTin

Je résume les étapes qui m'ont aidé à résoudre ce problème:

  1. Assurez-vous que la plage de ports SSL (utilisée par IIS express) est comprise entre 44300 et 44398.

Au cours de l'installation, IIS Express utilise Http.sys pour réserver les ports 44300 à 44399 pour une utilisation SSL. Cela permet aux utilisateurs standard (sans privilèges élevés) d'IISExpress de configurer et d'utiliser SSL. Pour plus de détails à ce sujet, voir ici

  1. Exécutez la commande ci-dessous en tant qu'administrateur dans l'invite de commande. Cela va générer les liaisons de certificat SSL sur l'ordinateur. Dans cette liste, recherchez le certificat utilisé par IIS express pour le port correspondant:

netsh http show sslcert> sslcert.txt

  1. Recherchez les éléments ci-dessous dans le fichier sslcert.txt (dans mon cas, le IIS express s'exécutait sur le port 44300)

IP: port : 0.0.0.0:44300

Certificat de hachage : eb380ba6bd10fb4f597cXXXXXXXXXX

ID de l'application : {214124cd-d05b-4309-XXX-XXXXXXX}

  1. Consultez également la console de gestion express IIS (RUN (Ctrl + R) -> inetmgr.exe) et recherchez si le certificat correspondant existe dans les certificats de serveur.

(Cliquez sur ServerRoot -> sous la section IIS () -> Ouvrez les certificats de serveur)

  1. Si votre hôte local utilise par défaut un autre certificat que celui indiqué à l'étape 3, continuez avec les étapes ci-dessous.

netsh http delete sslcert ipport = 0.0.0.0: 44300

netsh http add sslcert ipport = 0.0.0.0: 44300 certhash = New_Certificate_Hash_without_space appid = {214124cd-d05b-4309-XXX-XXXXXXX}

New_Certificate_Hash sera votre certificat par défaut lié à votre hôte local (que nous avons trouvé à l'étape 4) ou celui que vous souhaitez ajouter en tant que nouveau certificat.

P.S. Merci pour votre réponse osɐſ (ce qui m'a aidé à résoudre ce problème)

29
Karthik

Le problème que je rencontrais a eu à faire avec moi, à un moment donné, permettant HSTS pour localhost et ne réalisant pas que cela casserait mon http: // localhost: someport dans IIS Express.

HSTS indique au navigateur (Chrome dans mon cas) de demander TOUJOURS une URL à l'aide du protocole HTTPS. Ainsi, même si je n’avais même pas activé SSL pour mon application MVC 5, le navigateur essaierait toujours d’accéder à mon site en utilisant HTTPS dans l’URL au lieu de HTTP.

Le correctif?

  1. Surfez sur chrome: // net-internals/# hsts
  2. Dans la section Supprimer, entrez "localhost" et supprimez l'enregistrement de Chrome.
21
PussInBoots

Aucune des options ci-dessus n'a fonctionné pour moi. Je devais faire ce qui suit:

  1. Désinstallé IIS Express 8.0
  2. Supprimé toutes les configurations de mon répertoire Documents pour IIS Express
  3. Réinstallé IIS Express 8.0
  4. Supprimé le projet sur ma machine locale et téléchargé une version propre pour TFS
  5. A couru le projet - il a ensuite passé sur SSL et je suis capable de déboguer

J'ai eu les étapes de ce fil.

J'espère que cela t'aides.

12
lopezbertoni

J'ai un même problème dans Visual Studio 2015. Parce que j'utilise une liaison SSL dans web.config

<rewrite>
   <rules>   
     <rule name="HTTP to HTTPS Redirect" stopProcessing="true">
       <match url="(.*)" />
       <conditions>
          <add input="{HTTPS}" pattern="off" />
       </conditions>
          <action type="Redirect" url="https://{HTTP_Host}/{R:1}" redirectType="Found" />
     </rule>
   </rules>
</rewrite>

Et je peux résoudre le problème avec la réponse de Mr.djroedger. En remplaçant

<add input="{HTTPS}" pattern="off" />

avec

<add input="{HTTP_Host}" pattern="localhost" negate="true" />

dans mon web.config, donc mon code est

<rewrite>
  <rules>   
    <rule name="HTTP to HTTPS Redirect" stopProcessing="true">
      <match url="(.*)" />
      <conditions>
         <add input="{HTTP_Host}" pattern="localhost" negate="true" />
      </conditions>
         <action type="Redirect" url="https://{HTTP_Host}/{R:1}" redirectType="Found" />
    </rule>
 </rules>
</rewrite>
5
pompom

Dans mon cas, j’ai créé un certificat auto-signé et je l’avais fait fonctionner, sauf que je recevais une erreur dans le navigateur car le certificat n’était pas approuvé. J'ai donc déplacé le certificat dans le dossier Autorités de certification racines de confiance> Certificats du composant logiciel enfichable Certificats. Cela a fonctionné, puis j'ai fermé Visual Studio pour la journée.

Le lendemain, j'ai commencé mon projet et j'ai reçu l'erreur mentionnée dans la question initiale. Le problème est que le certificat avec lequel vous avez configuré IISExpress doit exister dans le dossier Personnel> Certificats, sinon HTTPS cessera de fonctionner. Une fois que IIS Express a démarré avec succès, vous pouvez faire glisser le certificat vers l'emplacement approuvé. Il continuera à fonctionner jusqu'à ce que vous redémarriez IIS Express.

Ne voulant pas faire de bruit en traînant le certificat d'avant en arrière à chaque fois, je viens de placer une copie du certificat aux deux endroits et maintenant tout fonctionne bien.

5
HackedByChinese

J'avais ce problème, j'avais configuré mon site pour l'exigence globale https dans FilterConfig.cs.

public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        filters.Add(new HandleErrorAttribute());
        filters.Add(new RequireHttpsAttribute());
    }

J'avais oublié de changer l'URL du projet en https: à partir de ce tutoriel http://Azure.Microsoft.com/en-us/documentation/articles/web-sites-dotnet-deploy-aspnet-mvc-app- membership-oauth-sql-database / sous ENABLE SSL part 4. Cela a causé les erreurs que vous obteniez.

4
gsmith

Un autre problème qui m'est arrivé deux fois:
Dans IIS Express applicationhost.config l'ordre des liaisons a de l'importance. Une liaison peut avoir priorité sur votre liaison SSL, ce qui la rend inopérante.

Exemple:

<site name="MySite007" id="1">
    <application path="/" applicationPool="Clr4IntegratedAppPool">
        <virtualDirectory path="/" physicalPath="C:\Users\myuser\projects\mysolutionfolder\MyProject.Service" />
    </application>
    <bindings>
        <binding protocol="http" bindingInformation=":8081:localhost" />
        <binding protocol="http" bindingInformation=":8080:" /><!-- evil binding -->
        <binding protocol="https" bindingInformation="*:44327:localhost" />
    </bindings>
</site>

Vous avez peut-être ajouté une liaison similaire à la seconde pour pouvoir accéder à votre WebService depuis l’extérieur localhost. Étant donné que cette liaison est à l'écoute de n'importe quelle adresse, elle semble remplacer la liaison SSL bien qu'un port différent ait été utilisé.

Supprimez diabolique ou déplacez-le vers le bas.

3
Thibault D.

Ceci est anecdotique comme entendu par un collègue, mais ce serait un problème avec chrome forcing https. J'ai l'habitude de lancer dans Firefox donc je n'avais pas vu ce problème avant. Utilisation de Firefox ou c.-à-d. Travaillé pour mon collègue.

2
Ken Johnson

Le ' vérificateur d'installation de certificats Digicert ' est souvent utile dans de telles situations.

J'ai pu vérifier que le certificat SSL en cours d'essais était celui que j'attendais en comparant le numéro de série.

enter image description here

Pour moi, @Jason Kleban a répondu au problème, mais c’est un utilitaire très utile pour vérifier vos assertions de base sur le type de certificat chargé.

1
Simon_Weaver

Si vous nécessité d'utiliser un port situé en dehors de la plage 44300-44399, voici une solution de contournement:

  • Créer un nouveau site dans IIS (non Express)
  • Liez HTTPS au port dont vous avez besoin
  • Pour le certificat SSL, choisissez Certificat de développement IIS Express
  • Une fois que le site est créé, arrêtez-le, car il n'a pas besoin de fonctionner

Cela enregistre le IIS certificat Express Development avec ce port et constitue le moyen le plus simple que j'ai trouvé pour contourner l'exigence de la plage 44300-44399.

1
trnelson

Dans mon cas, j'avais simplement oublié que j'avais établi une liaison pour (dans mon cas) https: // localhost: 443 en version complète IIS. Vous ne pouvez pas avoir les deux!

0
James Ellis-Jones

Mon problème a été causé par Fiddler. Lorsque Fiddler se bloque, il perturbe parfois les paramètres de votre proxy. Le simple lancement de Fiddler semblait tout réparer (peut-être qu'il se répare lui-même).

0
Jason

Pour faire suite à d’autres réponses concernant la définition du port SSL entre 44300 et 44399, j’ai été incapable de modifier la propriété SSL activé dans Visual Studio, ni de définir une URL SSL spécifique. D'autres réponses, telles que la réparation de IIS Express, n'ont pas aidé. La solution consistait à accéder au dossier .vs parallèlement au fichier sln, à ouvrir le sous-dossier config, puis à modifier le fichier applicationhost.config. Ensuite, j'ai ajouté manuellement la ligne https et redémarré VS.

<binding protocol="http" bindingInformation="*:24941:localhost" />
                <binding protocol="https" bindingInformation="*:44301:localhost" />
0
r590

Supprimer les répertoires IISExpress et vs et utiliser une plage de ports SSL de 44300 à 44399 (inclus) à partir de cet article a fonctionné pour moi

0
Luba Karpenko

Dans mon cas, l'URL localhost a été redirigé vers https: // localhost lorsque j'étais en train de déboguer. Cela s'est produit d'un moment à l'autre, sans rien changer. J'ai résolu ce problème en faisant un rechargement dur dans le navigateur. Ici le lien

0
jaimenino

Je venais de reconstruire mon ordinateur. Ce fil m'a donné les indices, où j'ai réalisé dans les paramètres du projet> Web, que le projet était configuré pour utiliser HTTP et le port HTTP. En le mettant à jour vers HTTPS et le port HTTPS correct, tout a recommencé à fonctionner.

0
Sam