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 (как сделано выше).

TL; DR: Нужен ли заголовок 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 во втором прослушивании 443 ssl www.example.com блок нужен? В качестве прямого запроса к https://www.example.com в любом случае будет SSL, и он получит заголовок STS includeSubDomains при перенаправлении с третьего блока сервера, защищая http://www.example.com в будущем.

0
задан 31 December 2017 в 13:29
1 ответ

Да, желательно иметь заголовок STS в обоих блоках server по той причине, которую вы написали в своем вопросе.

Если посмотреть на это с другой стороны, нет ничего плохого в том, чтобы указать заголовок на сервере example.com .

1
ответ дан 4 December 2019 в 16:03

Теги

Похожие вопросы