Назад | Перейти на главную страницу

hsts на основном порту 80, а не на других портах

Я установил hsts для своего домена на сайте http: //server.mydom.tld: 80, поэтому браузер переходит в порт https: //server.mydom.tld на порт 443

Однако у меня также есть другие веб-серверы, работающие на других портах. Итак, когда я иду в http: //server.mydom.tld: 8888 он пересылается https: //server.mydom.tld: 8888, но этот сервер не поддерживает https, поэтому запрос не выполняется.

Это согласно спецификации?

Я заметил, что не запускаю hsts на http: //mydom.tld или http: //www.mydom.tld, что, вероятно, является ошибкой.

Что делать?

Да, это сделано намеренно. 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