Назад | Перейти на главную страницу

Несколько сертификатов SSL для доступа к одному приложению ASP.NET в IIS

1
Здравствуй,

У меня есть приложение ASP.NET, которое в настоящее время доступно через одно доменное имя с сертификатом SSL. Мы хотели бы иметь доступ к тому же приложению через второе доменное имя. Часть без SSL проста, просто установите второе значение заголовка узла для веб-сайта в IIS. Мы знаем, что нам понадобится второй сертификат SSL для второго домена и, конечно же, второй IP-адрес для параллельного запуска двух сертификатов - ни то, ни другое не является проблемой.

Проблема в том, что IIS, похоже, не позволяет вам настроить ОДИН веб-сайт с ДВУМЯ сертификатами SSL - кажется, вы можете привязать один веб-сайт к двум записям SSL, при условии, что у каждой есть собственный IP-адрес, но только с использованием одного и того же сертификата.

Мы бы предпочли не иметь вторую запись веб-сайта в IIS, потому что это будет означать, что будет запущена полная вторая копия приложения ASP.NET, то есть удвоить использование памяти. Эти два домена в основном зависят от страны, поэтому мы не можем использовать подстановочный сертификат с поддоменами с общим доменным именем.

Есть какой-либо способ сделать это? Можно ли настроить IIS для обслуживания двух сертификатов SSL от одной записи веб-сайта (конечно, на основе IP-адреса)? Или лучший способ добиться этого - создать второй веб-сайт в IIS, который выполняет обратные прокси-серверы на «настоящий» веб-сайт?

Вам не понадобится второй IP-адрес или второй веб-сайт. Все, что вам нужно сделать, это получить новый сертификат, выпущенный для вашего существующего сайта, с добавлением определенного атрибута «Альтернативное имя субъекта». Это позволит вам использовать один и тот же сертификат SSL для нескольких полностью определенных доменных имен.

Это проблема не с IIS, а с безопасным уровнем:

Когда вы подключаетесь к HTTP-серверу, ваш браузер открывает TCP-соединение на удаленном сервере и использует его для запроса документа. Имя хоста, которое вы запрашиваете, отправляется только в этот момент. Таким образом удаленный сервер знает, какой веб-сайт вы хотите, только когда он получил этот запрос (спасибо, капитан очевидный!)

Теперь, если вы добавите SSL, необходимо перейти к обмену / проверке сертификата ПЕРЕД отправка запроса. В настоящее время веб-сервер не знает, какой веб-сайт (URL) вы запросили, поэтому он не может выбрать сертификат.

Вам нужно будет определить второй веб-сайт с другим IP- или TCP-портом для этого.

Вы не можете этого сделать, веб-сайту в IIS может быть назначен только один сертификат.

Ваш единственный вариант - определить два веб-сайта.

Если вы не хотите дублировать использование ресурсов, вы можете поместить оба приложения в один пул приложений.

Вы можете настроить обратный прокси-сервер iis перед вашим веб-сайтом и создать два правила для разгрузки трафика с двух разных DNS-имен.

(опционально, вы можете разместить все это на одном сервере, прокси на переднем порту 443, а ваш сайт на другом порту)

Затем создайте привязку https для каждого имени DNS, которое у вас есть, и не забудьте установить флажок «Требовать указание имени сервера».

Вы могли бы избежать этого, добавив второй домен в качестве альтернативного имени на том же SSL?

Насколько мне известно, единственный способ сделать это - иметь разные сертификаты на разных портах для одного и того же сайта, а затем сделать переадресацию портов с вашего брандмауэра.