Jak przywrócić brakujący certyfikat SSL usług IIS Express?


134

Po skonfigurowaniu protokołu HTTPS w IIS Express, zgodnie z takimi artykułami, jak ten i ten , nie mogę faktycznie załadować witryny IIS Express przy użyciu protokołu HTTPS. W Chrome dostaję tylko:

Ta strona internetowa jest niedostępna (z kodem błędu „ERR_CONNECTION_RESET”)

... aw IE dostaję tylko:

Internet Explorer nie może wyświetlić strony sieci Web

... kiedy postępuję zgodnie ze wskazówkami zawartymi w tych artykułach.

Wydaje się, że ma to związek z faktem, że „IIS Express Development Certificate” instalowany automatycznie przez IIS Express został usunięty. Jak mogę ponownie zainstalować ten certyfikat?


2
Zdarzyło mi się również, że próbowałem uruchomić IISExpress na porcie 443 (a właściwie na dowolnym porcie poza zakresem 44300-44399)
Gerardo Grignoli

Uwaga: zaakceptowana odpowiedź na to pytanie ma zastosowanie nawet w przypadku obecności certyfikatu hosta lokalnego IIS Express i wydaje się, że jest w porządku.
haymansfield

W przypadku programu Visual Studio 2017 zobacz stackoverflow.com/questions/44142037/ ...
RickAndMSFT,

Odpowiedzi:


193

Po przejściu do Dodaj / Usuń programy i wybraniu opcji „Napraw” w IIS Express, certyfikat został ponownie zainstalowany i mogę teraz uruchamiać witryny IIS Express przy użyciu HTTPS.

Napraw usługi IIS Express

Certyfikat powrócił:

Certyfikat rozwoju usług IIS Express

Mogę teraz uruchomić witrynę IIS Express przy użyciu protokołu HTTPS:

Sukces!


1
U mnie też działa, ale w moim przypadku certyfikat tam był. Nie wiem dlaczego, ale to spowodowało ten sam błąd. Usunąłem więc certyfikat i ponownie zainstalowałem go za pomocą „naprawy” i voila. Wielkie dzięki.
Darius

37
Uwaga dla użytkowników systemu Windows 10: Naprawa jest dostępna tylko w Panelu sterowania, a nie w aplikacji Dodaj i usuń programy. Genialny pomysł msft.
Chris Weber

1
Znacznie szybszym sposobem jest uruchomienie Jexus Managera i wygenerowanie nowego certyfikatu, a następnie powiązanie z Twoją witryną. jexusmanager.com Oczywiście to jeszcze nie naprawia zepsutych powiązań certyfikatów i zobaczę, jak uczynić to funkcją jednym kliknięciem.
Lex Li

Naprawa działa, ale musiałem usunąć wszystkie istniejące certyfikaty za pomocą MMC. Problem, na który natknąłem się, polegał na tym, że nie usuwałem ich jako admin z localMachine. Upewnij się, że uruchamiasz MMC z podwyższonymi uprawnieniami!
ranieuwe

6
Uwaga dla użytkowników VS2019: „Naprawa” nie zadziała, ponieważ Instalator programu Visual Studio nie umieści pliku MSI w miejscu, w którym Panel sterowania tego oczekuje. Jednak _package.json w tym samym katalogu znajduje się plik, który zawiera adres URL pliku MSI. Możesz uruchomić to ręcznie lub skopiować tam, gdzie oczekuje tego Panel sterowania.
Chris R. Donnelly

156

W przypadku programu Visual Studio 2015, IIS Express 10, Windows 10 te opcje nie działały. Usługi IIS Express 10 nie miały opcji naprawy.

Udało mi się rozwiązać problem za pomocą IisExpressAdminCmd.exepolecenia dostępnego pod adresem C:\Program Files (x86)\IIS Express.

Z podwyższonego wiersza polecenia uruchom:

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

Zastąpienie urlToYourSite swoim adresem URL.

na przykład

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

Następnie zamknąłem IIS Express i ponownie uruchomiłem witrynę z programu Visual Studio, po czym pojawiła się prośba o automatyczne zaufanie samopodpisanemu certyfikatowi.

Mam nadzieję, że to pomoże.


3
To zadziałało dla mnie podczas próby uruchomienia IISExpress na porcie 443. +1
Gerardo Grignoli

To rozwiązanie działało na mnie świetnie. Windows 10, Visual Studio 2015, IIS Express 10.
Glenn

1
Jeśli ktoś tutaj ma problemy z uzyskaniem określonego portu używanego przez IIS Express, możesz chcieć sprawdzić, czy ktoś ma witrynę zarejestrowaną w usługach IIS przy użyciu tego portu. To był mój dzisiejszy dzień.
Chris Marisic

2
W systemie Windows 10 usługi IIS Express mają opcję naprawy. Musisz przejść przez Panel sterowania. Zaakceptowana odpowiedź zadziałała dla mnie.
joerage

1
Jeśli masz dość korzystania z wiersza poleceń, możesz użyć Jexus Managera, aby zrobić to samo, blog.lextudio.com/ ...
Lex Li

40

Czasami ten błąd jest spowodowany zainstalowaniem innego certyfikatu dla hosta lokalnego. W takim przypadku nie ma potrzeby przywracania certyfikatu IIS Express. Zamiast tego możesz wykonać następujące czynności, aby poinformować IIS Express, aby używał Twojego istniejącego certyfikatu:

  1. Otwórz przystawkę Certyfikaty MMC w sposób opisany tutaj
  2. Znajdź certyfikat swojego hosta lokalnego, np. W Personal ... Certicates i uzyskaj jego odcisk palca:
    1. Wywołaj okno dialogowe właściwości certyfikatu hosta lokalnego i znajdź właściwość Odcisk palca
    2. Wklej wartość odcisku palca do Notatnika (lub cokolwiek innego) i usuń spacje i wszelkie znaki specjalne na początku
  3. Znajdź wartość portu projektu IIS Express:
    1. Przejdź do właściwości projektu w programie Visual Studio i znajdź wartość „SSL URL”, np. „ Https: // localhost: 44300 / MyApp ”.
    2. W tym przykładzie 44300 to numer portu. Jeśli twoja jest inna, zmień tę wartość w późniejszych poleceniach.
  4. Użyj następujących poleceń w administracyjnym wierszu poleceń (nie w programie 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}

Guid w powyższym poleceniu można zastąpić wygenerowanym. Nie odpowiada żadnej istniejącej wartości IIS Express.

Aby uzyskać dalsze informacje, zobacz Obsługa błędów wiązania adresu URL w usługach IIS Express .


2
Bardziej wizualnym sposobem jest użycie Jexus Manager, blog.lextudio.com/ ... wtedy nie musisz pamiętać szczegółów, takich jak skrót certyfikatu.
Lex Li

jeśli pojawi się komunikat „Parametr jest nieprawidłowy”. błąd - użyj najpierw tego pliku appid, a następnie certhash. Przykład: netsh http add sslcert ipport = 0.0.0.0: 44300 appid = {C21B9F4D-2A5D-4160-81C8-FBCC3EFC335E} certhash = your_cert_hash_with_no_spaces
gmsi

36

Należy również pamiętać, że aby usługi IIS Express współpracowały z protokołem SSL, używany port musi należeć do zakresu od 44300 do 44399 ( http://www.iis.net/learn/extensions/using-iis-express/running-iis-express- bez uprawnień administratora ).

Jeśli więc korzystasz z usług IIS Express w programie Visual Studio, upewnij się, że wybrany port znajduje się w wymaganym zakresie: vs ustawienie dla iis express


3
Udało mi się użyć portu poza tym zakresem po użyciu polecenia w odpowiedzi Berniego White'a bez żadnych problemów. Windows 10 / Visual Studio Community 2015 / .Net Core 1.0.1 / IIS Express 10.0
Ryan Thomas

1
Dzięki! To rozwiązało problem. Dziwne, że Visual Studio o tym nie ostrzega.
Erwin Mayer

4
44300-44399 to tylko domyślny zakres portów z zamapowanym certyfikatem. Możesz łatwo utworzyć podobne mapowanie certyfikatów, dzwoniąc netshlub po prostu użyć Jexus Manager, blog.lextudio.com/ ...
Lex Li

12

Z nowym Chrome 58 nic z poniższych odpowiedzi nie pomoże. Właśnie spędziłem godzinę na odinstalowywaniu / ponownym instalowaniu certyfikatów i próbowaniu ustalenia, gdzie jest problem.

Wygląda na to, że Chrome 58 odrzuci certyfikat, ponieważ „missing_subjectAltName”

Rozwiązaniem jest albo hasło „badidea”, albo jeśli potrzebujesz otwierać wyskakujące okienka do logowania, musisz użyć:

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

Źródłem jest, a głos upvote należy do: https://stackoverflow.com/a/38926117/2089232 :)



1
Zobacz także blog.lextudio.com/…
Lex Li

2

Chciałem to dodać, bo to śmieszne ale może komuś to pomoże. Pamiętaj, że nigdy wcześniej nie otwierałem właściwości mojego projektu, więc nie mam pojęcia, jak to się stało (sam tego nie zmieniłem ani nie miałem okazji), ale w Projekt> Właściwości> Sieć mój adres URL SSL został wymieniony jako mój zwykły adres URL ale jako http zamiast https (wcześniej był https, ponieważ wcześniej działał). Wykonałem wszystkie kroki wymienione na tej stronie, odinstalowałem VS, następnie IIS i w końcu zauważyłem błąd, który powinien być https: // mySSLURL (ale brakowało s w https). Kiedy zmieniłem http na https, wszystko znowu działało.



Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.