проблема
В настоящее время проблема связана с тем, что https://domain.com не перенаправляет на https://www.domain.com и показывает ненадежный сертификат ssl.
Это относится к тому, что решение ruby-on-rails перенаправляется на «www» до force_ssl
Вопрос
Есть ли способ перенаправления на www-домен, прежде чем требование SSL начнет?
Я использую PHP.
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
. Это можно сделать, используя один сертификат с несколькими записями альтернативного имени объекта. Большинство центров сертификации должны иметь возможность выдавать такие сертификаты. Некоторые делают это без дополнительной платы.
Ответ на перенаправление выдается через протокол HTTP. Чтобы получить такой ответ / команду, клиенту сначала необходимо установить HTTP-соединение. Если клиент пытается установить соединение HTTP_S_, то сначала необходимо завершить согласование SSL.
Другими словами, нет. Недопустимый URL-адрес https://domain.com
для вашего приложения. Ни один клиент не должен знать об этом конкретном адресе и, следовательно, не должен пытаться получить к нему доступ. Вы должны избегать предоставления этого URL-адреса в любом месте, чтобы клиенты не пытались получить к нему доступ. Фактически, вы, похоже, не хотите запускать HTTPS-сервер для этого домена, поэтому вы должны фактически отключить его, чтобы клиенты не могли domain.com
подключаться к domain.com
через HTTPS.
Лучшее решение, которое я нашел, – это просто купить новый сертификат SSL с альтернативными именами субъекта, чтобы вы могли иметь www и non-www в одном сертификате, и оба действительны. Таким образом, вы можете безопасно перенаправить https: // www на https: // прозрачно и без каких-либо ошибок сертификата.