Comment restaurer un certificat SSL IIS Express manquant?

134

Après avoir configuré HTTPS dans IIS Express, selon des articles tels que celui-ci et celui-ci , je ne peux pas réellement charger un site IIS Express en utilisant HTTPS. Dans Chrome , je reçois uniquement:

Cette page Web n'est pas disponible (avec le code d'erreur "ERR_CONNECTION_RESET")

... et dans IE, je ne reçois que:

Internet Explorer ne peut pas afficher la page web

... quand je suis les instructions de ces articles.

Il semble que cela ait à voir avec le fait que le «certificat de développement IIS Express» qu'IIS Express installe automatiquement a été supprimé. Comment faire réinstaller ce certificat?

Chris Simmons
la source
2
Il m'est également arrivé d'essayer d'exécuter IISExpress sur le port 443 (ou en fait sur n'importe quel port en dehors de la plage 44300-44399)
Gerardo Grignoli
Remarque: la réponse acceptée à cette question est applicable même lorsque le certificat d'hôte local IIS Express est présent et semble être correct.
haymansfield
Pour Visual Studio 2017, voir stackoverflow.com/questions/44142037/…
RickAndMSFT

Réponses:

193

Après être allé dans Ajout / Suppression de programmes et avoir choisi l'option «Réparer» sur IIS Express, le certificat a été réinstallé et je peux maintenant lancer les sites IIS Express en utilisant HTTPS.

Réparer IIS Express

Le certificat est de retour:

Certificat de développement IIS Express

Et je peux maintenant lancer le site IIS Express en utilisant HTTPS:

Succès!

Chris Simmons
la source
1
Fonctionne aussi pour moi, mais dans mon cas, le certificat était là. Je ne sais pas pourquoi, mais cela a entraîné la même erreur. J'ai donc supprimé le certificat et «réparer» réinstallé ce dernier, et le tour est joué. Merci beaucoup.
Darius
37
Remarque pour les utilisateurs de Windows 10: la réparation se trouve uniquement dans le panneau de configuration, pas dans l'application Ajouter des programmes de suppression. Excellente idée msft.
Chris Weber
1
Un moyen beaucoup plus rapide consiste à lancer Jexus Manager et à générer un nouveau certificat, puis à se lier à votre site. jexusmanager.com Bien sûr, il ne corrige pas encore les liaisons de certificat cassées et je vais voir comment en faire une fonctionnalité en un clic.
Lex Li
La réparation fonctionne mais j'ai dû supprimer tous les certificats existants à l'aide de MMC. Le problème que j'ai rencontré était que je ne les supprimais pas en tant qu'administrateur de localMachine. Assurez-vous d'exécuter MMC avec des autorisations élevées!
ranieuwe
6
Remarque pour les utilisateurs de VS2019: «Réparer» ne fonctionnera pas car le programme d'installation de Visual Studio ne place pas le fichier MSI là où le Panneau de configuration s'attend à ce qu'il soit. Cependant, il existe un _package.json fichier dans ce même répertoire et il contient l'URL du fichier MSI. Vous pouvez l'exécuter manuellement ou le copier là où le Panneau de configuration l'attend.
Chris R. Donnelly
156

Pour Visual Studio 2015, IIS Express 10, Windows 10, ces options ne fonctionnaient pas pour moi. IIS Express 10 n'avait pas d'option de réparation.

J'ai réussi à résoudre le problème en utilisant la IisExpressAdminCmd.execommande disponible sur C:\Program Files (x86)\IIS Express.

À partir d'une invite de commande élevée, exécutez:

cd C:\Program Files (x86)\IIS Express
IisExpressAdminCmd.exe setupsslUrl -url:urlToYourSite -UseSelfSigned

Remplacement de urlToYourSite par votre URL.

par exemple

cd C:\Program Files (x86)\IIS Express
IisExpressAdminCmd.exe setupsslUrl -url:https://localhost:44387/ -UseSelfSigned

Après cela, j'ai fermé IIS Express et redémarré mon site à partir de Visual Studio et il a été invité à approuver automatiquement le certificat auto-signé.

J'espère que cela pourra aider.

Bernie White
la source
3
Cela a fonctionné pour moi en essayant d'exécuter IISExpress sur le port 443. +1
Gerardo Grignoli
Cette solution a très bien fonctionné pour moi. Windows 10, Visual Studio 2015, IIS Express 10.
Glenn
1
Si quelqu'un ici rencontre des problèmes pour obtenir un port spécifique utilisé par IIS Express, vous voudrez peut-être vérifier si quelqu'un a un site enregistré dans IIS utilisant ce port. C'était ma journée aujourd'hui.
Chris Marisic
2
Dans Windows 10, IIS Express propose une option de réparation. Vous devez passer par le panneau de configuration. La réponse acceptée a fonctionné pour moi.
joerage
1
Si vous êtes fatigué d'utiliser la ligne de commande, vous pouvez utiliser Jexus Manager pour faire de même, blog.lextudio.com
Lex Li
40

Parfois, cette erreur est due à un certificat différent installé pour localhost. Si tel est le cas, il n'est pas nécessaire de restaurer le certificat IIS Express. Au lieu de cela, vous pouvez effectuer les opérations suivantes pour indiquer à IIS Express d'utiliser votre certificat existant:

  1. Ouvrez le composant logiciel enfichable Certificats MMC comme décrit ici
  2. Trouvez votre certificat d'hôte local, par exemple sous Personal ... Certicates et obtenez son empreinte numérique:
    1. Ouvrez la boîte de dialogue des propriétés du certificat localhost et recherchez la propriété Thumbprint
    2. Collez la valeur de l'empreinte numérique dans le Bloc-notes (ou autre) et supprimez les espaces et tous les caractères spéciaux au début
  3. Trouvez la valeur du port de votre projet IIS Express:
    1. Accédez aux propriétés du projet dans Visual Studio et recherchez la valeur "URL SSL", par exemple " https: // localhost: 44300 / MyApp ".
    2. Dans cet exemple, 44300 est le numéro de port. Si la vôtre est différente, modifiez cette valeur dans les commandes ultérieures.
  4. Utilisez les commandes suivantes dans une invite de commandes d'administration (pas Powershell):

netsh http delete sslcert ipport=0.0.0.0:44300

netsh http add sslcert ipport=0.0.0.0:44300 certhash=your_cert_hash_with_no_spaces appid= {123a1111-2222-3333-4444-bbbbcccdddee}

Le Guid de la commande ci-dessus peut être remplacé par celui que vous générez. Il ne correspond à aucune valeur IIS Express existante.

Pour plus d'informations, consultez Gestion des échecs de liaison d'URL dans IIS Express .

explunit
la source
2
Une manière plus visuelle est d'utiliser Jexus Manager, blog.lextudio.com/ ... alors vous n'avez pas à vous souvenir des détails comme le hachage de certificat.
Lex Li
si vous obtenez "Le paramètre est incorrect." error - utilisez d'abord cet appid puis certhash. Exemple: netsh http add sslcert ipport = 0.0.0.0: 44300 appid = {C21B9F4D-2A5D-4160-81C8-FBCC3EFC335E} certhash = your_cert_hash_with_no_spaces
gmsi le
36

Notez également que pour qu'IIS Express fonctionne avec SSL, le port utilisé doit être compris entre 44300 et 44399 ( http://www.iis.net/learn/extensions/using-iis-express/running-iis-express- sans-privilèges-administratifs ).

Donc, si vous utilisez IIS Express dans Visual Studio, assurez-vous que le port sélectionné est dans la plage requise: vs paramètre pour iis express

Shiraz
la source
3
J'ai pu utiliser un port en dehors de cette plage après avoir utilisé la commande dans la réponse de Bernie White sans aucun problème. Windows 10 / Visual Studio Community 2015 / .Net Core 1.0.1 / IIS Express 10.0
Ryan Thomas
1
Merci! Cela a résolu le problème pour moi. Bizarre que Visual Studio ne prévienne pas à ce sujet.
Erwin Mayer
4
44300-44399 est simplement la plage de ports par défaut avec un certificat mappé. Vous pouvez facilement créer un mappage de certificat similaire en appelant netshou simplement utiliser Jexus Manager, blog.lextudio.com
Lex Li
12

Avec le nouveau Chrome 58, rien des réponses ci-dessous n'aidera. Je viens de passer 1 heure à désinstaller / réinstaller des certificats et à essayer de trouver où se situe le problème.

Apparemment, Chrome 58 refusera le certificat car "missing_subjectAltName"

La solution est soit la phrase de passe "badidea", soit si vous devez ouvrir des popups pour vous connecter, vous devez utiliser:

chrome: // flags / # allow-insecure-localhost

La source est et le vote positif appartient à: https://stackoverflow.com/a/38926117/2089232 :)

Milan
la source
1
Voir aussi blog.lextudio.com
Lex Li
2

Je voulais ajouter ceci, parce que c'est ridicule mais peut-être que cela aidera quelqu'un. Gardez à l'esprit que je n'avais jamais ouvert les propriétés de mon projet auparavant, donc je n'ai aucune idée de la façon dont cela s'est produit (je n'ai pas changé cela moi-même ou j'ai eu l'occasion de le faire), mais dans Projet> Propriétés> Web, mon URL SSL était répertoriée comme mon URL habituelle mais comme http au lieu de https (était auparavant https car il fonctionnait auparavant). J'ai parcouru toutes les étapes répertoriées sur cette page, désinstallé VS, puis IIS, et finalement remarqué l'erreur qui aurait dû être https: // mySSLURL (mais il manquait le s en https). Une fois que j'ai changé http en https, tout a fonctionné à nouveau.

Elijah Tate
la source
0

Je viens d'avoir ce problème après avoir mis à jour mon VS 2017 vers la (les) dernière (s) version (s) et créé un nouveau projet (.Net) MVC / WebAPI (à partir du modèle). J'ai pu résoudre ce problème en ajustant mes numéros de port pour qu'ils soient dans la plage correcte

Chorme des plages de ports par défaut pour DEV SSL

Ce que j'ai pu trouver ici: https://www.pluralsight.com/guides/visual-studio-2017-resolving-ssl-tls-connections-problems-with-iis-express

J'espère que cela t'aides!

Edd
la source