hsts на основном порте 80, а не на других портах
Я установил hsts для своего домена на сайте http://server.mydom.tld/, поэтому браузер переходит на порт https://server.mydom.tld/ на порт 443
Однако у меня также есть другие веб-серверы, работающие на других портах. Поэтому, когда я захожу на http://server.mydom.tld:8888/ он перенаправляется на https://server.mydom.tld:8888/, но этот сервер не запускает https, поэтому запрос не выполняется.
Это согласно спецификации?
Я заметил, что не запускаю hsts на http://mydom.tld/ или http://www.mydom.tld/, что, вероятно, является ошибкой.
Что делать?
2 ответа
Да, это намеренно. RFC 6797 заявляет:
The UA MUST replace the URI scheme with "https" [RFC2818], and if the URI contains an explicit port component of "80", then the UA MUST convert the port component to be "443", or>> if the URI contains an explicit port component that is not equal to "80", the port component value MUST be preserved; otherwise, if the URI does not contain an explicit port component, the UA MUST NOT add one. NOTE: These steps ensure that the HSTS Policy applies to HTTP over any TCP port of an HSTS Host.
Вам следует запускать простые службы HTTP в другом домене или, что еще лучше, использовать сервер HTTP+TLS в качестве обратного прокси-сервера для внутренней простой службы HTTP.
Заголовок Strict-Transport-Security игнорируется браузером, когда к вашему сайту обращаются по HTTP; это потому, что злоумышленник может перехватить HTTP-соединения и вставить заголовок или удалить его. Когда к вашему сайту обращаются по HTTPS без ошибок сертификата, браузер знает, что ваш сайт поддерживает HTTPS и будет учитывать заголовок Strict-Transport-Security.
Если кто-то действительно не хочет запускать https в другой службе, можно добавить псевдоним в DNS, поэтому https://server.domain.tld и http://service.domain.tld:8888 находятся на одном IP. / сервер
Затем можно добавить перенаправление с http://service.domain.tld и https://service.domain.tld на http://service.domain.tld:8888.