HSTS с каноническим перенаправлением URL в nginx
Я использовал конфигурацию nginx из этого поста для реализации перенаправления с http://(www.)example.com -> https://example.com/:
server {
server_name www.example.com example.com;
return 301 https://example.com$request_uri;
}
server {
listen 443 ssl;
<possibly other ssl directives if you have a separate cert and key for www>
server_name www.example.com;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
return 301 https://example.com$request_uri;
}
server {
listen 443 ssl;
ssl_certificate /path/to/server.cert;
ssl_certificate_key /path/to/server.key;
server_name example.com;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
<locations for processing requests>
}
Я хотел бы добавить HSTS к этому, поэтому я следую документации по nginx, что равносильно добавлению
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
к обоим блокам сервера SSL (как сделано выше).
TLDR: нужен ли заголовок STS во втором блоке сервера?
Однако я немного читал эту тему, особенно этот пост в блоге, который, казалось, думал, что:
... если ваш канонический URL-адрес www.example.com, токен includeSubDomains не будет защищать example.com, поскольку он не является поддоменом www.example.com. Решение состоит в том, чтобы сделать запрос от www.example.com к некэшируемому ресурсу на
https:// example.com
Например, изображение размером 1 пиксель, и убедитесь, что https: // example.com устанавливает заголовок HSTS.
Я думаю, это правильно, как будто вы идете прямо к каноническому https://www.example.com
тогда это только защитит http://*.www.example.com.
Однако это не проблема, если ваш канонический URL https://example.com
и вы используете includeSubDomains
, Я проверил его на Chrome, и он сделал следующее http://www.example.com
(307) -> https://www.example.com
(301) -> https://example.com
,
Так это Strict-Transport-Security
заголовок во втором listen 443 ssl
www.example.com
блок нужен? Как прямой запрос к https://www.example.com
в любом случае был бы SSL, и это подхватило бы STS includeSubDomains
заголовок при перенаправлении с третьего блока сервера, защищающий http://www.example.com
в будущем.
1 ответ
Да, желательно иметь заголовок STS в обоих server
блоки, по той причине, что вы написали в своем вопросе.
Если посмотреть на это с другой стороны, то нет никакого вреда в указании заголовка в example.com
сервер тоже.