Заголовок HSTS не установлен при настройке с www и без www

Здравствуйте,

Я использую стандартную установку.

Вот что я изменил в app.yml:

hooks:   
## Добавьте сертификат Let's Encrypt для доменных имен без www и с www   
  after_ssl:     
    - replace:         
        filename: "/etc/runit/1.d/letsencrypt"         
        from: /--keylength/         
        to: "-d example.com -d www.example.com --keylength"

Хостнейм вашего Discourse: www.example.com

На данный момент настройка работает, и сертификат выдается для example.com и www.example.com.

Однако при проверке параметров SSL с помощью SSLLabs заголовок HSTS отсутствует для домена www.example.com. Для example.com всё работает:

Строгая транспортная безопасность (HSTS) Да
max-age=31536000; includeSubdomains; preload

А сервис Hardenize (www.hardenize.com) сообщает следующее:

Перенаправление с HTTP на HTTPS не ведет к тому же хосту

При использовании HSTS порт в открытом виде должен перенаправлять на HTTPS-вариант того же хостнейма. Такой подход гарантирует, что HSTS включен для этого хостнейма, даже если позже клиент будет перенаправлен в другое место. Перенаправление на другой хост безопасно только в том случае, если это родительский хост, у которого включен HSTS с параметром includeSubDomains, но в данном случае это не так.

Точка начала: http://example.de

Текущее перенаправление: https://www.example.com

Ожидаемое перенаправление: https://example.com

Политика не включена в preload
Если хостнейм включен в preload, это означает, что браузеры внедряют вашу политику HSTS и применяют её даже к первому запросу, отправленному на ваш сайт. Данный сервер указывает на включение preload в своей политике, но доменное имя на самом деле не включено в preload. Мы классифицируем это как предупреждение, поскольку часто возникает проблема размещения ключевого слова ‘preload’ в политике, даже если инфраструктура не готова к preload. Это опасно, так как в такой ситуации любой может подать это доменное имя на preload, просто посетив hstspreload.org. Мы рекомендуем либо самостоятельно включить этот домен в preload, если он готов, либо удалить индикатор preload из политики до тех пор, пока он не будет готов.

Есть ли у кого-нибудь идеи, почему заголовок HSTS НЕ устанавливается для домена www.example.com?

Интересно, я недавно перешел на поддомен www, и у моего корневого домена отсутствует HSTS, но я задумываюсь, связано ли это с редиректом и отсутствием прямого ответа от сервера? Корневой домен всё ещё получает оценку «A» (хоть и более низкую)… повлияет ли это на репутацию сервера или SEO? Без HSTS всё определённо работает нормально.

Не знаю, полезно ли это:

Вам нужно внимательнее изучить файл web.template.yml и результирующие файлы конфигурации nginx, а затем добавить необходимые настройки, чтобы заставить nginx делать то, что вам нужно.