2012-06-07 4 views
7

ПроблемаПеренаправление на «WWW» перед требованием Ssl

я в настоящее время есть проблема, где https://domain.com не редирект https://www.domain.com и показывает ненадежный сертификат SSL.

Это связано, который является рубин-на-рельсы решение redirect to 'www' before force_ssl

Вопрос

Есть ли способ, чтобы перенаправить к домену WWW перед требованием SSL пинков в?

Я использую PHP.

+0

Возможный дубликат [Переадресация https на не-www и http-www] (http://stackoverflow.com/questions/10725357/redirect-https-to-non-www-and-http-to-www) – Bruno

+0

@Bruno Посмотрел на многие случаи, но никто не определяет ответ, полученный deceze. – williamcarswell

+0

Не уверен, что вы имеете в виду.Я мог бы более или менее скопировать/вставить ответ, который я дал другому вопросу, чтобы ответить на ваш вопрос. (Более или менее то же, что и то, что сказал deceze, единственное, что он не говорит, это то, что вы могли бы достичь того, чего хотите, имея сертификат, действительный для обоих.) Во всем этом есть ряд вопросов. Вот еще один пример на SF: http://serverfault.com/a/360985/47187 – Bruno

ответ

18

HTTPS - это HTTP через TLS/SSL (см. RFC 2818), который сначала устанавливает соединение SSL/TLS перед отправкой любого HTTP-трафика. Любое перенаправление (через mod_rewrite, пользовательский PHP-код или другое) всегда будет применяться после установления соединения SSL/TLS.

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

Если вы хотите перенаправить от https://domain.com к https://www.domain.com, сертификат, полученный для https://domain.com должен быть действителен domain.com (а затем, сертификат, полученный для https://www.domain.com должен быть действительным для www.domain.com).

(Вы можете использовать два различных сертификатов с сервера имен Индикация если два хоста подаются на тот же IP-адрес, но это довольно запутанным.)

Проще было бы получить сертификат, действительный для обоих domain.com и www.domain.com. Это можно сделать, используя один сертификат с несколькими записями альтернативного имени объекта. Большинство центров сертификации должны иметь возможность выдавать такие сертификаты. Некоторые делают это без дополнительной платы.

1

Ответ на перенаправление выдается через протокол HTTP. Чтобы получить такой ответ/команду, клиенту сначала необходимо установить HTTP-соединение. Если клиент пытается установить соединение HTTP_S_, то сначала необходимо завершить согласование SSL.

Другими словами, нет. URL-адрес https://domain.com недействителен для вашего приложения. Ни один клиент не должен знать об этом конкретном адресе и, следовательно, не должен пытаться получить к нему доступ. Вы должны избегать предоставления этого URL-адреса в любом месте, чтобы клиенты не пытались получить к нему доступ. Фактически, вы, похоже, не хотите запускать HTTPS-сервер для этого домена, поэтому вы должны его отключить, поэтому клиенты не смогут подключиться к domain.com через HTTPS.

0

Лучшее решение, которое я нашел, чтобы просто купить новый SSL сертификат с предметными альтернативных имен, так что вы можете иметь WWW и не-WWW в одном сертификате, и оба являются действительными. Таким образом, вы можете безопасно перенаправить https://www на https: // прозрачно и без ошибок сертификата.

Смежные вопросы