URL: https://www.opennet.dev/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 105173
[ Назад ]

Исходное сообщение
"Раздел полезных советов: Перенаправление на HTTPS при помощи..."

Отправлено auto_tips , 24-Окт-15 10:21 
Протокол HSTS (HTTP Strict Transport Security) позволяет администратору сайта указать на необходимость обращения только по HTTPS и автоматизировать проброс на HTTPS при изначальном обращении по ссылке на HTTP. Управление производится при помощи HTTP-заголовка Strict-Transport-Security, который выдаётся при обращении по HTTPS (при выдаче по HTTP заголовок игнорируется) и указывает браузеру на необходимость оставаться в зоне HTTPS даже при переходе по ссылкам "http://". Замена http:// на https:// будет автоматически выполняться при обращении к защищаемому ресурсу с внешних сайтов, а не только для внутренних ссылок.

Использование в Apache:

При помощи mod_headers устанавливаем для HTTPS-блока виртуального хоста заголовок Strict-Transport-Security (max-age - срок действия (1 год), includeSubdomains - распространять замену http:// на https:// для всех поддоменов; preload - занести в поддерживаемый браузером статический список).
Дополнительно устанавливаем заголовок "X-Frame-Options: DENY" для запрета встраивания контента сайта в блоки iframe.

   LoadModule headers_module modules/mod_headers.so

   <VirtualHost 192.168.1.1:443>
      Header always set Strict-Transport-Security "max-age= 31536000; includeSubdomains; preload"
      Header always set X-Frame-Options DENY
   </VirtualHost>

Для HTTP-блока хоста настраиваем редирект:

   <VirtualHost *:80>
     <IfModule mod_rewrite.c>
       RewriteEngine On
       RewriteCond %{HTTPS} off
       RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI&#...
     </IfModule>
    </VirtualHost>

Настройка в nginx:

Добавляем в блок server:

    add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
    add_header X-Frame-Options "DENY";

Настройка в Lighttpd:

   server.modules += ( "mod_setenv" )
   $HTTP["scheme"] == "https" {
       setenv.add-response-header  = ( "Strict-Transport-Security" => "max-age=63072000; includeSubdomains; preload",  "X-Frame-Options" => "DENY")
   }


URL: https://raymii.org/s/tutorials/HTTP_Strict_Transport_Securit...
Обсуждается: http://www.opennet.dev/tips/info/2918.shtml


Содержание

Сообщения в этом обсуждении
"Перенаправление на HTTPS при помощи HSTS в Apache, NGINX и Lighttpd"
Отправлено hander , 24-Окт-15 10:21 
не лишним будет обратить внимание на includeSubdomains и то что эти субдомены(если есть) должны быть готовы перейти, точней перейдут автоматом, даже если заголовок не отдается на субдоменах.

"Перенаправление на HTTPS при помощи HSTS в Apache, NGINX и Lighttpd"
Отправлено cmp , 24-Окт-15 19:31 
А на виртуальном хосте:80 не проще редирект повесить на 443 порт, надо извращаться?

"Перенаправление на HTTPS при помощи HSTS в Apache, NGINX и L..."
Отправлено PavelR , 25-Окт-15 08:26 
>А на виртуальном хосте:80 не проще редирект повесить на 443 порт, надо извращаться?

Редирект тоже вешают, это разные меры.

После включения HSTS браузер уже никогда не будет делать httP запросы к указанному домену, только httpS. Таким образом нельзя будет встать посередине, перехватить (заблокировать) редирект 80 -> 443 и дальше контролировать весь открытый трафик.

Для этого надо, чтобы браузер хотя бы раз зашел на настоящий httpS домена и получил HSTS-заголовок.


"Перенаправление на HTTPS при помощи HSTS в Apache, NGINX и L..."
Отправлено cmp , 25-Окт-15 09:36 
> это разные меры.

То есть контент можно получить по http? но пытаемся средствами сервера запретить клиенту это делать?

> перехватить (заблокировать) редирект 80 -> 443

С тем же успехом можно перехватить любой заголовок, то есть если допустить, что пользователь туп как пробка и всегда входит по ссыке domain.com, не проверяя хттпэСность, то спасти его от слива инфы никак нельзя.


"Перенаправление на HTTPS при помощи HSTS в Apache, NGINX и L..."
Отправлено PavelR , 28-Окт-15 17:06 
>> это разные меры.
> То есть контент можно получить по http? но пытаемся средствами сервера запретить
> клиенту это делать?

Отдать /модифицированный/ контент по httP мог MtM-прокси. При этом он мог получить его вполне себе по httpS.

>> перехватить (заблокировать) редирект 80 -> 443
> С тем же успехом можно перехватить любой заголовок, то есть если допустить,
> что пользователь туп как пробка и всегда входит по ссыке domain.com,
> не проверяя хттпэСность, то спасти его от слива инфы никак нельзя.

Нельзя спасти его от слива инфы только при первом входе пользователя на сайт.
После получения заголовка HSTS и сохранения его в хранилище браузер больше не будет обращаться к серверу по httP, соответственно вмешаться в трафик будет нельзя.


"Перенаправление на HTTPS при помощи HSTS в Apache, NGINX и L..."
Отправлено cmp , 29-Окт-15 12:54 
Костылизм впечатлил

"Перенаправление на HTTPS при помощи HSTS в Apache, NGINX и L..."
Отправлено Аноним , 13-Дек-15 17:27 
Ага, особенно с учетом того, что на проксе это выбивается в одно действие. Достаточно просто заголовки подменить.

"Перенаправление на HTTPS при помощи HSTS в Apache, NGINX и Lighttpd"
Отправлено ALex_hha , 24-Окт-15 19:37 
> RewriteCond %{HTTPS} off
> RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI&#...

а чем не устроило ?

Redirect 301 / https://www.example.com/


"Перенаправление на HTTPS при помощи HSTS в Apache, NGINX и Lighttpd"
Отправлено pavlinux , 25-Окт-15 03:05 
Может пора уже на 80 порту выдавать HTTPS

"Перенаправление на HTTPS при помощи HSTS в Apache, NGINX и Lighttpd"
Отправлено PavelR , 25-Окт-15 08:23 
>При помощи mod_headers устанавливаем для HTTPS-блока виртуального хоста
>заголовок Strict-Transport-Security (max-age - срок действия (1 год),

А в конфигах

>Header always set Strict-Transport-Security "max-age= 31536000; includeSubdomains; preload"
>add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
>setenv.add-response-header  = ( "Strict-Transport-Security" => "max-age=63072000; includeSubdomains; preload"

У apache, в отличие от nginx и Lighttpd, какой-то свой год?


"Перенаправление на HTTPS при помощи HSTS в Apache, NGINX и Lighttpd"
Отправлено keir , 06-Ноя-15 14:20 
Это вот отсюда - https://raymii.org/s/tutorials/HTTP_Strict_Transport_Securit...

Дело хорошее, но только после этого - https://raymii.org/s/tutorials/Strong_SSL_Security_On_Apache...


"Перенаправление на HTTPS при помощи HSTS в Apache, NGINX и Lighttpd"
Отправлено Аноним , 19-Ноя-15 14:20 
Не работает. Проверил на двух сборках nginx.

"Перенаправление на HTTPS при помощи HSTS в Apache, NGINX и Lighttpd"
Отправлено hander , 08-Дек-15 22:41 
у меня не хотело работать без [R=301,L]

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI&#... [R=301,L]
</IfModule>


"Перенаправление на HTTPS при помощи HSTS в Apache, NGINX и Lighttpd"
Отправлено Иван , 02-Апр-16 23:16 
max-age=63072000 - не слишком ли много на два года?
Что за бездумный копипаст
Сделайте на месяц 2592000 секунд

"Перенаправление на HTTPS при помощи HSTS в Apache, NGINX и Lighttpd"
Отправлено Александр Лыженков , 23-Май-18 17:58 
Я использовал отличную статью по покупке и настройке https на nginx
https://onlinebd.ru/blog/instrukciya-po-nastroike-https-dlya...
Полная инструкция по настройке HTTPS с оценкой А+