У нас есть веб-сайт, работающий по протоколу HTTPS по следующему URL-адресу: abc.example.com.
Проблема в том, что наш клиент считал, что любой URL-адрес веб-сайта должен начинаться с www
и напечатал www.abc.example.com
на всех этикетках ...
Нет проблем, я просто создал правило перенаправления, используя функцию перезаписи URL-адресов IIS, чтобы перенаправить все имена хостов на https://abc.example.com
. Все идет нормально.
Несколько месяцев назад мы получили электронное письмо от их отдела информационной безопасности, в котором говорилось, что abc.example.com
не хватало Strict-Transport-Security
заголовок. Они попросили нас реализовать следующий заголовок:
Strict-Transport-Security = max-age=31536000; includeSubDomains; preload.
В то время я не был полностью осведомлен о точной функции этого заголовка, поэтому слепо добавил его на сайт. Я тестировал сайт, просто никогда не тестировал его с помощью www.abc.example.com
.
Я только сейчас узнал, что этот заголовок HSTS будет перенаправлять все URL-адреса HTTP на URL-адреса HTTPS самостоятельно, что приведет к игнорированию моих пользовательских правил перенаправления. Проблема в том, что пользователи вводят http://www.abc.example.com
и вас перенаправят на https://www.abc.example.com
, вместо того https://abc.example.com
, что приводит к ошибке сертификата SSL, потому что www.abc.example.com
не имеет сертификата SSL.
Так долго как includeSubDomains
активен, я, кажется, очень мало могу сделать, чтобы предотвратить это на веб-сервере, если я не настроил сертификат SSL специально для www.abc.example.com
.
Вот почему я подумал о том, чтобы попытаться решить эту проблему путем перенаправления на уровне DNS с использованием записи CNAME: www.abc.example.com. CNAME abc.example.com.
У меня вопрос, это сработает? Когда пользователь входит http://www.abc.example.com
, будет ли запись CNAME сначала перенаправить этот URL на http://abc.example.com
а затем успешно перенаправить на https://abc.example.com
используя заголовок HSTS? Или параметр preload
предотвратить это даже на уровне DNS?
Любые предложения или помощь приветствуются.
Нет, не пойдет. На уровне DNS нет такой вещи, как перенаправление; перенаправление - это функция протокола HTTP, а DNS (оба A
и CNAME
) записи используются только для разрешения IP-адреса.
Также нет смысла пытаться аннулировать ситуацию, удалив заголовок,
Strict-Transport-Security = max-age=31536000; includeSubDomains; preload.
поскольку он будет кешироваться в каждом браузере для 31536000
секунд, т.е. 365 дней.
Однако, если вы не реализуете HSTS таким образом, вы не получите особых преимуществ, поскольку кто-то может попытаться изменить http://www.abc.example.com
прежде, чем он будет перенаправлен на https://
.
Здесь единственным выходом может быть получение подстановочного сертификата, покрывающего *.abc.example.com
, или сертификат с несколькими именами, имеющий как Альтернативное имя субъектас.