Я не могу заставить IIS Express принимать безопасные соединения для проекта VS2010 MVC3, который я разрабатываю.Я могу заставить его принимать незащищенные соединения через порт 80, но не защищенный через порт 443.
Я предпринял следующие шаги, основанные на поиске в Google:
1) Расположен отпечаток SHA1 длямой самозаверяющий сертификат IIS Express Server, выполнив в командной строке VS2010 следующее:
certmgr.exe /c /s /r localMachine MY
В результате получилось 9B088F80 A4FC3141 28F62890 70BA1FC4 49FDD009.Позже я узнал, что мне нужно удалить пробелы при использовании отпечатка.
2) Удалил любой сертификат, связанный с портом 443, выполнив в командной строке с повышенными правами следующую команду:
netsh http delete sslcert ipport=0.0.0.0:443
3) Сгенерировал новый GUID, запустив Create GUID из меню инструментов VS2010.В моем случае я получил B0421A5B-FF61-47CE-892D-11AA3A9C7D2A.
4) Установил самоподписанный сертификат на порт 443, выполнив в командной строке с повышенными правами следующую команду:
netsh http add sslcert ipport=0.0.0.0:443 certhash=9B088F80A4FC314128F6289070BA1FC449FDD009 appid={B0421A5B-FF61-47CE-892D-11AA3A9C7D2A}
5) Изменил ACL, выполнив в командной строке с повышенными правами следующую команду:
netsh http add urlacl url=https://localhost:443/ user=everyone
6) Изменил файл application.config для IIS Express, добавив привязку для порта 443 и протокола https.Раздел сайтов для файла в итоге выглядел так:
<sites>
<site name="Development Web Site" id="1" serverAutoStart="true">
<application path="/">
<virtualDirectory path="/" physicalPath="%IIS_BIN%\AppServer\empty_wwwroot" />
</application>
<bindings>
<binding protocol="https" bindingInformation="*:443:localhost" />
<binding protocol="http" bindingInformation="*:80:localhost" />
</bindings>
</site>
<siteDefaults>
<logFile logFormat="W3C" directory="%IIS_USER_HOME%\Logs" />
<traceFailedRequestsLogging directory="%IIS_USER_HOME%\TraceLogFiles" enabled="true" maxLogFileSizeKB="1024" />
</siteDefaults>
<applicationDefaults applicationPool="IISExpressAppPool" />
<virtualDirectoryDefaults allowSubDirConfig="true" />
</sites>
7) Перезапустил службу http, выполнив в командной строке с повышенными правами следующую команду:
net stop http
net start http
8) ИзменилURL-адрес проекта на вкладке "Веб" на странице свойств моего проекта MVC:
http://localhost/
Сохранение страницы свойств проекта вызвало изменение конфигурации сервера после внесения этого изменения.
Когда яЗапустите приложение MVC из VS2010, оно корректно связывается с http://localhost (на порту 80, по умолчанию; я не включил все шаги, чтобы заставить IIS Express работать с незащищенными / обычными соединениями на порту 80, нопо сути, это шаги с 5 по 7, но они сосредоточены на http и порте 80, а не на https и порте 443).
Однако при попытке перейти к какому-либо действию, требующему https, возникает ошибка «Отказано в соединении с сервером».
Что я делаю не так?