Как восстановить отсутствующий сертификат IIS Express SSL?


134

После настройки HTTPS в IIS Express, согласно таким статьям, как эта и эта , я не могу на самом деле загрузить сайт IIS Express с использованием HTTPS. В Chrome я получаю только:

Эта веб-страница недоступна (с кодом ошибки "ERR_CONNECTION_RESET")

... и в IE я получаю только:

Internet Explorer не может отобразить веб-страницу

... когда я следую указаниям в этих статьях.

По-видимому, это связано с тем, что «Сертификат разработки IIS Express», который автоматически устанавливается IIS Express, был удален. Как мне переустановить этот сертификат?


2
Также случилось, что я пытался запустить IISExpress на порту 443 (или на самом деле на любом порте за пределами диапазона 44300-44399)
— Герардо Гриньоли

Примечание. Принятый ответ на этот вопрос применим даже при наличии сертификата локального хоста IIS Express и, по-видимому, в порядке.
— Хеймансфилд

Для Visual Studio 2017 см stackoverflow.com/questions/44142037/...
— RickAndMSFT

Ответы:


193

После перехода на «Установка и удаление программ» и выбора «Восстановить» в IIS Express сертификат был переустановлен, и теперь я могу запускать сайты IIS Express с использованием HTTPS.

Ремонт IIS Express

Сертификат вернулся:

Сертификат развития IIS Express

И теперь я могу запустить сайт IIS Express, используя HTTPS:

Успех!


1
У меня тоже работает, но в моем случае там был сертификат. Не уверен, почему, но это привело к той же ошибке. Так что я удалил сертификат, и «ремонт» переустановил это обратно, и вуаля. Большое спасибо.
— Дарий

37
Примечание для пользователей Windows 10: восстановление выполняется только на панели управления, а не в приложении «Установка и удаление программ». Гениальная идея MSFT.
— Крис Вебер

1
Гораздо более быстрый способ - запустить Jexus Manager, сгенерировать новый сертификат и затем привязать его к своему сайту. jexusmanager.com Конечно, он еще не исправляет сломанные привязки сертификатов, и я посмотрю, как сделать это одним щелчком мыши.
— Лекс Ли

Ремонтные работы, но мне пришлось удалить все существующие сертификаты с помощью MMC. Проблема, с которой я столкнулся, заключалась в том, что я не удалял их как admin из localMachine. Убедитесь, что вы запускаете MMC с повышенными правами!
— ranieuwe

6
Примечание для пользователей VS2019: «Восстановление» не будет работать, поскольку установщик Visual Studio не помещает MSI-файл туда, где его ожидает панель управления. Однако _package.json в этом же каталоге есть файл, в котором содержится URL-адрес файла MSI. Вы можете запустить его вручную или скопировать туда, где его ожидает панель управления.
— Крис Р. Доннелли

156

Для Visual Studio 2015, IIS Express 10, Windows 10 эти параметры не работали для меня. В IIS Express 10 не было варианта ремонта.

Мне удалось решить проблему с помощью IisExpressAdminCmd.exeкоманды, доступной на C:\Program Files (x86)\IIS Express.

Из командной строки с повышенными привилегиями запустите:

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

Замена urlToYourSite на ваш URL.

например

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

После этого я закрыл IIS Express и перезапустил свой сайт из Visual Studio, и он предложил автоматически доверять самозаверяющему сертификату.

Надеюсь, это поможет.


3
Это сработало для меня, пытаясь запустить IISExpress через порт 443. +1
— Герардо Гриноли

Это решение отлично сработало для меня. Windows 10, Visual Studio 2015, IIS Express 10.
— Гленн

1
Если у кого-то здесь возникают проблемы с получением определенного порта, используемого IIS Express, вы можете проверить, есть ли у кого-либо зарегистрированный в IIS сайт, использующий этот порт. Это был мой день сегодня.
— Крис Марисик

2
В Windows 10 IIS Express имеет возможность восстановления. Вам нужно пройти через панель управления. Принятый ответ сработал для меня.
— Joerage

1
Если вы устали от использования командной строки, вы можете использовать Jexus Manager, чтобы сделать то же самое, blog.lextudio.com/…
— Лекс Ли

40

Иногда эта ошибка происходит из-за другого сертификата, установленного для localhost. В этом случае нет необходимости восстанавливать сертификат IIS Express. Вместо этого вы можете сделать следующее, чтобы IIS Express использовал существующий сертификат:

  1. Откройте оснастку MMC «Сертификаты», как описано здесь.
  2. Найдите свой сертификат localhost, например, в разделе Личные ... Сертификаты и получите его отпечаток:
    1. Откройте диалоговое окно свойств для сертификата localhost и найдите свойство Thumbprint.
    2. Вставьте значение отпечатка в Блокнот (или что-то еще) и удалите пробелы и любые специальные символы в начале
  3. Найдите значение порта вашего проекта IIS Express:
    1. Перейдите к свойствам проекта в Visual Studio и найдите значение «SSL URL», например « https: // localhost: 44300 / MyApp ».
    2. В этом примере 44300 - это номер порта. Если у вас другое, измените это значение в последующих командах.
  4. Используйте следующие команды в командной строке администратора (не 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 в приведенной выше команде может быть заменен на тот, который вы генерируете. Он не соответствует ни одному из существующих значений IIS Express.

Дополнительные сведения см. В разделе « Обработка ошибок привязки URL-адресов в IIS Express» .


2
Более наглядным способом является использование Jexus Manager, blog.lextudio.com/…, тогда вам не нужно запоминать такие детали, как хэш сертификата.
— Лекс Ли

если вы получите «Параметр неверен». ошибка - сначала используйте этот appid, затем certhash. Пример: 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

Также обратите внимание, что для работы IIS Express с SSL используемый порт должен находиться в диапазоне от 44300 до 44399 ( http://www.iis.net/learn/extensions/using-iis-express/running-iis-express- без административных привилегий ).

Итак, если вы используете IIS Express в Visual Studio, убедитесь, что выбранный порт находится в требуемом диапазоне: vs настройка для iis express


3
Я смог использовать порт вне этого диапазона после использования команды в ответе Берни Уайта без каких-либо проблем. Windows 10 / Visual Studio Community 2015 / .Net Core 1.0.1 / IIS Express 10.0
— Райан Томас,

1
Спасибо! Это решило проблему для меня. Странно, что Visual Studio не предупреждает об этом.
— Эрвин Майер

4
44300-44399 - это просто диапазон портов по умолчанию с сопоставленным сертификатом. Вы можете легко создать аналогичное сопоставление сертификатов, позвонив по телефону netsh, или просто воспользуйтесь Jexus Manager, blog.lextudio.com/…
— Лекс Ли

12

С новым Chrome 58 ничего из ответов ниже не поможет. Я только что потратил 1 час на удаление / переустановку сертификатов и пытался выяснить, в чем проблема.

Судя по всему, Chrome 58 откажется от сертификата, потому что «missing_subjectAltName»

Решением является либо парольная фраза «badidea», либо, если вам нужно открыть всплывающие окна для входа, вы должны использовать:

хром: // флаги / # позволяют нестабильным-локальный

Источник и upvote принадлежит: https://stackoverflow.com/a/38926117/2089232 :)



1

2

Я хотел добавить это, потому что это смешно, но, возможно, это кому-то поможет. Имейте в виду, что я никогда раньше не открывал свойства своего проекта, поэтому я понятия не имею, как это произошло (я сам не менял это или не имел возможности сделать это), но в Project> Properties> Web мой URL-адрес SSL был указан как мой обычный URL но как http вместо https (ранее был https, потому что раньше он работал). Я прошел все шаги, перечисленные на этой странице, удалил VS, затем IIS и, наконец, заметил ошибку, которая должна была быть https: // mySSLURL (но в https отсутствовал s). Как только я изменил http на https, все снова заработало.



0

Я только что столкнулся с этой проблемой после обновления VS 2017 до последних версий и создал новый (.Net) проект MVC / WebAPI (из шаблона). Я смог исправить это, настроив номера портов так, чтобы они находились в правильном диапазоне.

Диапазон портов Chorme по умолчанию для DEV SSL

Что я смог найти здесь: https://www.pluralsight.com/guides/visual-studio-2017-resolving-ssl-tls-connections-problems-with-iis-express

Надеюсь это поможет!

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.