Как восстановить отсутствующий сертификат 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» .

explunit
источник
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 :)

milanio
источник
1
Также см. Blog.lextudio.com/…
Лекс Ли
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

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

Эдд
источник