Ответ 1
"Я предполагаю, что проблема кроется в факт, что я не могу указать хост значение заголовка для SSL"
Вы правильно поняли. Вам понадобятся два IP-адреса.
В настоящее время я должен иметь 2 поддомена в одном домене под SSL.
Оба субдомена (www и affiliate) находятся на одном сервере IIS под одним и тем же IP-адресом, и каждый из них указал значение заголовка узла (www.mydomain.com и affiliate.mydomain.com)
Первый субдомен (www), который является стандартным, отлично работает с SSL и без него.
Второй субдомен отлично работает под HTTP.
Проблема в том, что я только что купил и установил SSL-сертификат для дочернего субдомена, а когда вы перейдете на https://affiliate.mydomain.com, вы получите перенаправлено на http://www.mydomain.com
Я предполагаю, что проблема заключается в том, что я не могу указать значение заголовка хоста для SSL? (в диалоговом окне, где я обычно устанавливаю значение заголовка хоста, этот параметр не указан в нижней части, посвященной SSL).
Что я могу сделать по этому поводу? Должен ли я иметь каждый поддомен в отдельном IP-адресе? Это вообще не выполнимо?
Спасибо! Daniel
"Я предполагаю, что проблема кроется в факт, что я не могу указать хост значение заголовка для SSL"
Вы правильно поняли. Вам понадобятся два IP-адреса.
Проблема имеет основополагающее значение для работы HTTPS.
Виртуальный хостинг основан на заголовке "Host", представленном в HTTP/1.1. Эта часть протокола HTTP, но с точки зрения протокола SSL, уровень HTTP является "данными приложения" и не может быть передан до тех пор, пока не будет завершено подтверждение SSL.
Однако сертификат сервера отображается во время рукопожатия. HTTP-сервер еще не видел заголовок "Host", поэтому он не знал, какой сертификат отправить. Использование отдельного IP-адреса работает, потому что это видно на уровне IP ниже SSL.
Обновление: существует новое расширение TLS, которое позволяет клиентам указывать сервер, который они намерены использовать во время рукопожатия. Подробнее см. dlongley.
Я не уверен, какой веб-сервер вы используете, но в IIS 6 на сервере Windows 2003 вы можете использовать заголовки хостов для сайтов SSL, что позволяет им находиться на одном IP-адресе.
EDIT: Это будет работать, только если сертификат является подстановочным сертификатом. В противном случае субдомен "партнер" попытается использовать тот же сертификат, что и поддомен "www", и посетители получат предупреждение.
Это, вероятно, не поможет, но, надеюсь, это информативно.
Существует расширение для протокола TLS, используемого некоторыми клиентами TLS, называемым именем сервера (SNI). Это расширение позволяет клиентам TLS указывать имя хоста сервера, с которым они пытаются связаться. Поэтому, когда клиент подключается и отправляет сообщение ClientHello в протоколе TLS, сервер может решить, с каким сертификатом отвечать. Это делает виртуальные серверы SSL/TLS возможными на одном IP-адресе.
OpenSSL предоставляет функции обратного вызова, позволяющие вам читать, какое имя хоста отправлено клиентом, и обрабатывать получение соответствующего сертификата, но, к сожалению, я понятия не имею, возможно ли это с помощью IIS.
В конкретной ситуации, где вам нужны 2 поддомена того же домена, для сертификата WildCard есть. Я использую подстановочный сертификат с 3 лет для десятков сайтов, и ни один клиент сообщил об ошибках
Если у вас есть что-то, указывающее, что сертификат предназначен для "www", то ваш сертификат не является подлинным подстановочным сертификатом, или вы испытываете какие-то проблемы с кешированием браузера или используете 2 копии сертификата, и вы обновляете только один из них, или вы забыли перезапустить сервер, или.. я не знаю:)