У меня есть приложение ASP.NET, которое в настоящее время доступно через одно доменное имя с сертификатом SSL. Мы хотели бы иметь доступ к тому же приложению через второе доменное имя. Часть без SSL проста, просто установите второе значение заголовка узла для веб-сайта в IIS. Мы знаем, что нам понадобится второй сертификат SSL для второго домена и, конечно же, второй IP-адрес для параллельного запуска двух сертификатов - ни то, ни другое не является проблемой.
Проблема в том, что IIS, похоже, не позволяет вам настроить ОДИН веб-сайт с ДВУМЯ сертификатами SSL - кажется, вы можете привязать один веб-сайт к двум записям SSL, при условии, что у каждой есть собственный IP-адрес, но только с использованием одного и того же сертификата.
Мы бы предпочли не иметь вторую запись веб-сайта в IIS, потому что это будет означать, что будет запущена полная вторая копия приложения ASP.NET, то есть удвоить использование памяти. Эти два домена в основном зависят от страны, поэтому мы не можем использовать подстановочный сертификат с поддоменами с общим доменным именем.
Есть какой-либо способ сделать это? Можно ли настроить IIS для обслуживания двух сертификатов SSL от одной записи веб-сайта (конечно, на основе IP-адреса)? Или лучший способ добиться этого - создать второй веб-сайт в IIS, который выполняет обратные прокси-серверы на «настоящий» веб-сайт?
Ваша проблема неразрешима из-за того, как работает протокол SSL и виртуальные хосты. Вы должны использовать только один сертификат для каждого IP-адреса, независимо от количества обслуживаемых им виртуальных хостов.
Как уже предложил Брайан, вы можете разместить несколько альтернативных имен виртуальных хостов в одном сертификате (используя subjectAltName x.509 extension - см. http://tools.ietf.org/html/rfc3280#section-4.2.1.7), но это все равно будет один сертификат. Посетители одного из ваших виртуальных хостов смогут определить все остальные виртуальные хосты, просто проанализировав расширение сертификата.
Ограничение связано с тем, как организован протокол HTTPS - это просто HTTP, наложенный поверх SSL.
Поэтому, когда клиент подключается к серверу, он сначала должен установить сеанс SSL - это этап, на котором сервер представляет сертификат.
На этом этапе сервер не знает, какой виртуальный хост запросит клиент, потому что клиент сделает это позже, только после установления сеанса SSL.
Только после того, как сеанс SSL был установлен, клиент инициирует диалог HTTP, отправляя заголовки клиента HTTP, которые включают заголовок «Host:», указывающий адрес хоста веб-сайта, который запрашивает клиент. Это происходит спустя много времени после того, как сертификат сервера был отправлен клиенту.
Вместо использования подстановочного сертификата вы можете указать альтернативные имена в атрибуте Subject Alternate Name (SAN) сертификата SSL. Вы настроите IIS для использования одного и того же сертификата для обеих привязок.
Надеюсь, это поможет, -брайан
Удар в темноте, но если ты мы запуск 2 веб-сайтов IIS, может ли их запуск под одним пулом приложений снизить затраты на память?
Вы можете запустить обратный прокси (например, использовать nginx) перед своим приложением. Обратный прокси позаботится о двух сертификатах за вас.
Обратный прокси будет прослушивать https: // fqdn1 / и https: // fqdn2 / с соответствующими сертификатами и будет прокси для http: // localhost / application / или что-то еще.
HTH
Брэм