IIS Express - заставить работать SSL - PullRequest
59 голосов
/ 02 апреля 2011

Я не могу заставить 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, возникает ошибка «Отказано в соединении с сервером».

Что я делаю не так?

Ответы [ 4 ]

75 голосов
/ 06 апреля 2011

После того, как вы настроили проект для использования IISExpress, нажмите F4, когда проект выбран в обозревателе решений, чтобы открыть свойства и в наборе свойств SSL Enable установить true и в SSL URL установить URL с портом (443 в вашем случае), который вы хотите использовать для SSL.

Это работает для меня, не заходя под капот, и самозаверяющий сертификат был автоматическим.

Чтобы запустить проект по этому URL-адресу по умолчанию, вы можете щелкнуть правой кнопкой мыши проект, выбрать свойства, затем Web и заменить URL-адрес проекта на https://localhost:443

6 голосов
/ 03 апреля 2011

Я наткнулся на ответ.

На шаге 6 я изменял неправильный файл IIS Express application.config.Оказывается, в домашнем каталоге приложения есть «главный» конфигурационный файл (например, C:\Program Files (x86)\IIS Express\AppServer в моей системе), который я и модифицировал.

Второй и правильный файл для изменения находится в области пользовательских данных (например, C:\Users\Mark.ARCABAMA\Documents\IISExpress\config в моей системе).

5 голосов
/ 30 декабря 2016

Если вы выполнили шаги jbtule и SSL все еще не работает, убедитесь, что ваш порт имеет формат :443XX.

Visual Studio делала это автоматически для первого проекта, на котором я включил SSL, но у всех последующих проектов, кажется, есть случайные порты SSL.Изменив его на указанную выше структуру 443 под пользовательским интерфейсом Project > Web, он заработал и работал на меня.

0 голосов
/ 20 мая 2019

Я просто хотел бы добавить решение, которое помогло мне решить ту же проблему.

VS показал SSL URL, который был https://[an IP, not localhost]:44367

URL был зарезервирован, который я нашел с netsh http show urlacl

Затем я запустил netsh http delete urlacl https://[an IP, not localhost]:44367, перезагрузил VS, выключил SSL, установив для SSL значение false и снова включил. Это исправило URL SSL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...