9 заметок с тегом

настройка

/core.php, line 2
Error 2: Use of undefined constant k - assumed 'k' (this will throw an Error in a future version of PHP)

/core.php, line 2
Error 2: Use of undefined constant k - assumed 'k' (this will throw an Error in a future version of PHP)

/core.php, line 2
Error 2: Use of undefined constant k - assumed 'k' (this will throw an Error in a future version of PHP)

/core.php, line 2
Error 2: Use of undefined constant k - assumed 'k' (this will throw an Error in a future version of PHP)

/core.php, line 2
Error 2: Use of undefined constant k - assumed 'k' (this will throw an Error in a future version of PHP)

/core.php, line 2
Error 2: Use of undefined constant k - assumed 'k' (this will throw an Error in a future version of PHP)

/core.php, line 2
Error 2: Use of undefined constant k - assumed 'k' (this will throw an Error in a future version of PHP)

/core.php, line 2
Error 2: Use of undefined constant k - assumed 'k' (this will throw an Error in a future version of PHP)

/core.php, line 2
Error 2: Use of undefined constant k - assumed 'k' (this will throw an Error in a future version of PHP)

WiFi на несколько этажей

Стоит задача установить интернет в гостинице на несколько этажей — с 3-го по 5-ый. Номеров много, кабели кидать не вариант — работы не на один месяц с учетом загруженности. Поэтому делаем обычный WiFi. Берем три роутера по средней цене, по одному на каждый этаж. Один ставим основным, к нему подведен кабель провайдера, остальные два работают как усилители. В пятницу проложили кабель от провайдера, подключили к основному роутеру. Остальную работу оставил на понедельник.
Вчера с утра еду в гостиницу, все настраиваю. Вроде бы все работает замечательно: интернет раздается на все три этажа, уровень сигнала хороший до конца коридора в обоих направлениях. Но я же не могу просто так все оставить, начинаю тестирование. Так как все роутеры фирмы Keenetic, то при настройке и тестировании сильно помогла программа My.Keenetic с Google Play. Отключаем питание основного роутера, имитируя ситуацию с отключением электричества. После окончания загрузки ждем несколько минут, чтобы «усилители» подхватили сеть. Хрен там плавал! Не видят они после такого происшествия основной роутер. Экспериментальным путем было выяснено, что достаточно перезагрузить один из двух «усилителей», чтобы восстановить всю сеть на всех этажах. Попутно выяснилось, что не получится сделать этакую «лестницу»: второй «усилитель» берет WiFi с основного роутера и используется для получения сигнала третьего. Все должны подключаться только к основному. Печально. Хотя, возможно, я что-то не так делал.
Выходов из текущей ситуации я вижу несколько (в порядке предпочтения):

  1. Обратиться в техническую поддержку производителя. Возможно, что там прояснится ситуация почему «усилители» не подхватывают сеть.
  2. Сделать самому или просто купить «умную» розетку, которой можно управлять удаленно. Не ездить же после каждого отключения света восстанавливать WiFi в гостинице.
  3. Самый простой и надежный, на первый взгляд. Переключаем роутеры в режим «точки доступа» и прокладываем кабель между ними. Но тут интересен вопрос о том как будут «дружить» между собой три беспроводных сети с одинаковым именем. Никогда не экспериментировал с этим.
2018   wifi   интернет   настройка   роутер   сибиряк

Управление плеером VLC с пульта

Предыстория.
Все началось с того, что меня попросили записать несколько мультсериалов на диски. Плеер оказался капризным, документация не соответствовала действительности, пришлось помучиться с подбором воспринимаемых им кодеков. В процессе захотелось посмотреть некоторые из этих сериалов — я начинал их смотреть в детстве, но до конца их так и не посмотрел. Серии короткие, в среднем по 20 минут, и вскакивать каждый раз, чтобы переключить на следующую, мне было лень. Поэтому на аукционе был приобретен универсальный пульт, который мне предстояло настроить на управление VLC.

Пульт Vieta
Вот такой вот симпатичный пульт

Я бы еще долго его «настраивал» по причине лени, но в прошедшую пятницу меня практически свалил с ног приступ хандроза. Нормально дышать я не мог — каждый вдох отдавался болью в груди, поэтому всякие физические нагрузки мне были противопоказаны. В субботу вспомнил про него и решил, что пора устроить себе постельный режим.

Переходим к настройке.
Lirc у меня на компьютере уже был установлен, дело было только за настройкой пульта. В процессе выяснилось множество деталей, пульт тоже оказался немного «капризным», поэтому пришлось немного отойти от стандартного пути настройки. В итоге все выглядело следующим образом.
Для начала записываем коды клавиш пульта. Мне пришлось форсировать raw-режим записи:

# irrecord -f --device=/dev/lirc0

Далее жмем Enter и немного ждем как просит программа. Вводим название пульта без пробелов, у меня это Vieta. Потом начинаем нажимать разные кнопки пульта с такой скоростью, чтобы появилась хотя бы одна точка и их было бы не больше 10. В результате irrecord определяет его параметры и затем начинается процесс ввода кнопок. Вводим название кнопки, затем, когда программа попросит, нажимаем саму кнопку. Названия лучше брать стандартные, узнать их можно выполнив следующую команду:

# irrecord -l

После того как введена последняя кнопка, при запросе имени очередной кнопки нужно просто нажать Enter. Процесс записи завершен, о чем irrecord и проинформирует, указав имя файла, в который были записаны данные. Конечно, можно использовать и получившийся в результате файл (наверное), но выглядит он не очень эстетично, поэтому лучше привести его в более читабельный вид:

# irrecord -a Vieta.lircd.conf

В конце выполнения этой команды будет предложено ввести имя файла, в который будет сохранен результат. Вводим имя и продолжаем.
Получившийся в результате файл копируем в папку /etc/lirc/lircd.conf.d. «Плюсом» в этой папке является то, что туда можно скопировать множество файлов от разных пультов и все они будут использоваться lirc. Перезапускаем службу:

# service lircd restart

Половина работы сделана, осталось настроить VLC. Для этого нужно будет создать еще один файл, в который будут записаны действия, выполняемые в ответ на нажатие соответствующей кнопки. Этот файл один для множества программ, но меня пока что интересует только плеер. Формат у файла следующий:

begin
    button = KEY_PLAYPAUSE
    prog = vlc
    config = key-play-pause
end

Здесь KEY_PLAYPAUSE — это название кнопки из ранее созданного файла vieta.lircd.conf, vlc — название программы, а key-play-pause — действие в плеере. Список действий VLC можно посмотреть на вики проекта, но лучше использовать следующую команду:

vlc -H --advanced 2>&1 |sed -n '/--key/ {s/^\ *--//; s/^\(.*\) <[^>]*>\ *\(.*\)$/\2 -> \1/; h}; /^.*[^ ].*-> key/ p; /^ -> key/ { n; s/^[ \t\n]*//M; G; s/\n//; p}'

Далее, по документации к lirc нам нужно запустить программу irexec, которая и будет «нажимать» кнопки в системе в ответ на нажатие на пульте. Но, как оказалось в случае с VLC, нам она не нужна. Осталось только настроить сам плеер на удаленное управление. Запускаем его и идеи в настройки программы и в левом нижнем углу выбираем пункт «Все». Для начала включаем управление пультом

Подключение lirc в VLC
Подключение lirc в VLC

Затем указываем имя файла конфигурации. Он у меня называется .lircrc и лежит в домашнем каталоге. Чтобы он мне не мешался, я сделал его скрытым.

Путь к файлу lircrc
Указываем полный путь к файлу lircrc

Всё, сохраняем настройки и перезапускаем плеер. Теперь можно пробовать управлять VLC с пульта.
Сразу он у меня не заработал, пришлось проверять, что компьютер вообще принимает команды с пульта:

# irw

Если после нажатия кнопки на пульте на экране появляются коды кнопок и их названия, которые были введены в файл vieta.lircd.conf, то пульт и приемник работают нормально. У меня реакции не было никакой, но после выполнения команды

# mode2

все странным образом заработало.
Особо меня порадовала кнопка Language на пульте. На нее я повесил переключение звуковой дорожки. Например, в том же «Доктор Хауз» звуковых дорожек с русским переводом несколько, но нравится мне только один. С этой кнопкой не нужно заморачиваться каждый раз при переключении.
Да, весь процесс настройки немного муторный, нужно вводить много текста, но делается это один раз, поэтому придется потерпеть.
Еще одним «минусом» , с которым мне пришлось столкнутся — ИК-излучатель в моем пульте совсем чуть-чуть торчит из корпуса, вследствие чего угол, под которым можно управлять плеером, очень мал. Надо достаточно точно направлять пульт на приемник. Впрочем, это устранимо :-)
Кстати, счастливые обладатели телефона с ИК-передатчиком, могут использовать его для управления плеером или вообще компьютером. Да, я знаю, что есть множество других программ для управления компьютером, но почему бы не использовать и такой вариант?

P.S. Пока искал как lirc различает короткое и длинное нажатие на клавишу пульта, наткнулся на недокументированный (по крайней мере, на официальном сайте его описание я не нашел) параметр ignore_first_events, который позволяет реализовать реакцию на долгое нажатие кнопки. В ходе тестирования оказалось, что сначала идет реакция на короткое нажатие, затем, если кнопка не была отпущена, то выполняется действие, запрограммированное на долгое. Чтобы было понятней, покажу на примере. Например, в файле lircrc заданы следующие секции:

begin
    button = KEY_FORWARD
    prog = vlc
    config = key-jump+short
end

begin
    button = KEY_FORWARD
    prog = vlc
    config = key-jump+medium
    ignore_first_events = 10
end

Если зажать кнопку примерно на три секунды, то сначала выполнится первая секция — плеер переместится на 10 секунд вперед, затем, спустя 10 повторов от пульта, выполнится вторая секция — плеер перейдет на 60 секунд вперед. То есть, в сумме, плеер перейдет на 70 секунд вперед.

2018   lirc   vlc   настройка   пульт   управление

Неудачное начало дня

На неделе договорились с товарищем, что я проведу техническое обслуживание в одной из аптек. Заодно я решил, что он будет первым кто протестируем мою новую систему заявок на техподдержку. Итак, он оставил там заявку, я получил уведомление, все нормально. Ехать я должен был в субботу утром.
Утро субботы началось как обычно. Телефон меня уведомил о наличии новой прошивки и предложил обновить ее. Ничуть не сомневаясь, как обычно, согласился. Все предыдущие обновления проходили без эксцессов. Но это был не тот случай... После обновления прошивки и перезагрузки телефон выдал сообщение «Приложение system не отвечает» и предложили либо закрыть его, либо подождать. Ни одна из кнопок на нажатия не реагировала. Перезагружаю телефон, жду. После загрузки он снова перезагрузился, что вызвало у меня некоторые подозрения. В итоге, после десятка перезагрузок он либо выдавал вышеуказанное сообщение, либо перезагружался, либо вообще не реагировал на любые действия. Потихоньку я начинал понимать, что придется делать сброс настроек, но очень не хотелось... Но выхода не было. Надеясь на то, что после сброса работа телефона восстановится, загрузился в recovery (поди еще разберись в китайских надписях!) и сбросил телефон до заводского состояния. После сброса пришлось, конечно, заново устанавливать все необходимые программы.
Потеряв на всех этих манипуляциях почти час времени, с опозданием поехал в аптеку — работать все равно надо. Проведя там полдня, в перерывах восстановил работу мессенджеров — благо, что их было всего трое. Контакты восстановились из резервной копии Google. А вот бэкап Xiaomi меня ничуть не порадовал — последний созданный бэкап датировался летом прошлого года. Спрашивается зачем я настраивал синхронизацию? Но чуть позже оказалось, что все смс-ки, фотографии и т. д. снова очутились у меня на телефоне. СМС-сообщения были самым, наверное, важным среди всего этого. Это меня порадовало, ибо были контакты еще не внесенные в адресную книгу, но которые можно было извлечь из смс-ок.
В итоге, настройку телефона закончил только сегодня. Самым утомительным оказалось организовать ярлыки на рабочем столе по папкам.

2018   настройка   обновление   прошивка   сбой   сброс   телефон

Serviio

Небольшой обзор DLNA-сервера

Чуть меньше недели назад я, при помощи докера, установил на свой домашний сервер Serviio. В отличие от других серверов подобного рода, которые я попробовал, этот показался мне самым интересным, несмотря на его недостатки. Впрочем, последнее — только мое мнение, кому-то эти недостатки покажутся преимуществами.
Сразу хочу упомянуть один достаточно важный момент. Первые 15 дней сервер работает в режиме полной функциональности. Если по истечении этого периода вы не установите лицензию, то программа автоматически перейдет в режим бесплатной версии, которая имеет некоторые ограничения. Почитать о различиях версий можно на этой странице. Стоимость лицензии на текущий момент составляет 25 долларов США. Или около 1500 российских рублей.
Первое, что мне бросилось в глаза — множество папок, так же как и у miniDLNA. Это очень опечалило потому, что из-за этого нюанса я и собирался менять сервер. Но, покопавшись в настройках, обнаружил, что отображение папок настраивается и можно просто убрать ненужные. Так я и поступил, оставив только самые востребованные.
В качестве папок, где хранятся файлы, которые вы потом будете воспроизводить на телевизоре или другом устройстве, можно указать любые. Но так как я использую докер, то их нужно дополнительно указывать в параметрах запуска контейнера и только затем подключать в настройках программы. Как обычно, поиск мультимедиа файлов несколько нагружает процессор, что, впрочем, длится достаточно недолго.
Не лишним будет упомянуть порты, которые могут вам понадобиться для просмотра или для управления сервером:

  1. 1900 — общий порт UPnP;
  2. 8895 — не совсем понял что за порт, но без него ни одно устройство не видит сервер.
  3. 23423 и 23523 — для управления сервером по HTTP и HTTPS протоколам соответственно.
  4. 23424 и 23524 — для просмотра мультимедиа по HTTP и HTTPS соответственно.

Если вы планируете просматривать фильмы, слушать музыку или управлять сервером за пределами вашей сети, то на последние 4 порта следует настроить перенаправление на роутере или просто открыть к ним доступ извне. Но, увы, для этого вам понадобятся дополнительные программы для вашего смартфона или планшета:

  1. ServiiGo. Программа для удаленного просмотра фильмов или прослушивания музыки. Увы, но для доступа к такой возможности требуется версия Pro сервера. Для использования требует порты 23424 и 23524.
  2. ServiiDroid. Эта программа позволяет вам:
  • просматривать текущее состояние сервера и изменять его;
  • вручную обновить данные библиотеки;
  • просмотреть или изменить настройки подключенных клиентов;
  • управлять папками, в которых нужно искать файлы, или онлайн-источниками;
  • и, наконец, изменять настройки самого сервера.
    Иными словами, эта программа позволяет вам полностью управлять настройками Serviio и, что не менее важно, она не требует для своей работы Pro-версии программы.

Кстати, заметил, что по протоколу HTTPS сервер отдает данные немного быстрее, чем по HTTP.
Из «минусов» могу отметить следующие пункты:

  1. Некоторую заторможенность в работе программы, что обусловлено использованием java.
  2. Не всегда корректно распределяет медиафайлы по категориям.
  3. Некорректно работает с кодировкой cp1251. То есть, с русским языком.

Второй пункт раздражает больше всего. Например, я скачал из интернета все сезоны «Звездного пути». Serviio просканировал все папки и отобразил мне две папки сериала вместо одной. В первой папке были три сезона по одной-две серии в каждом, во второй — все 7 сезонов и все серии. Думаю, что это связано с некорректной обработкой информации, извлеченной из этих файлов, но не править же каждый раз эту информацию (что, кстати, не помогает) после скачивания фильма.
Третий пункт... Думаю тут даже рассказывать нечего. Если информация в файле закодирована при помощи cp1251, то вместо нормального текста, на экране вы увидите «кракозябры». Лечится это перекодировкой в utf-8, то есть после скачивания, например, музыки, нужно сделать еще дополнительные движения.

2018   docker   serviio   настройка   обзор

Установка Serviio

На домашнем сервере установлен Alt Linux, у которого свое видение в отношении сторонних программ. Того serviio в репозитории нет, а попытка установить его с сайта провалилась. Скорее всего, тут сыграло роль недостаточное знание мной линукса. Поэтому, в итоге, был выбран путь попроще, который я с начала не заметил. Речь идет об установке serviio в виде docker.
Для начала скачиваем образ на компьютер:

# docker pull lsiocommunity/serviio

Затем, в соответствии с документацией, запускаем, немного изменив параметры запуска под себя:

docker run -d --restart=always --name=serviio -v /mnt/sda/serviio/config:/config -v /mnt/sda/serviio/media:/media -v /mnt/sda/serviio/transcode:/transcode --net=host lsiocommunity/serviio

По пути /mnt/sda у меня находится второй жесткий диск, на котором располагается всякое «барахло».
Поначалу ни одно из устройств в сети не смогло увидеть serviio. Немного поэкспериментировав, понял, что все дело в том, не был открыт один из портов на сервере. В итоге, пришлось открыть порты 8895, 23423, 23424, 23523, 23524 и 1900. Serviio не видели именно из-за порта 8895.
Ну а дальше все было просто: заходим по адресу http://192.168.1.254:23423/console (где 192.168.1.254 — адрес моего сервера) и настраиваем сервер под свои нужды уже в графическом интерфейсе. Тестировал его работу на трех устройствах: ТВ Samsung UE43M5500AU, телефоне на базе Android и компьютере с установленными Alt Linux и VLC. Все три успешно подключились и смогли проиграть фильм с разрешением FullHD. Тормоза оказались только на телефоне, но с него, как говорится, «взятки гладки».

2018   dlna   docker   linux   serviio   настройка   сервер

Добавляем mail.ru в Openfire

«Переклинило» меня на очередном эксперименте — подключаться к icq и mail.ru через транспорты своего jabber-сервера. Разницы для меня никакой, в то же время нужно заводить только одну учетную запись в клиенте. Плюс к этому вся история переписки будет храниться опять же на моем сервере.
Все оказалось и просто и сложно одновременно. Сложность заключалась в том, чтобы найти компонент для использования транспорта. Ссылка на компонент в популярной статье о подключении транспорта оказалась не рабочей, но нашлась на другом ресурсе. Благо, что человек выложил архив с нужными файлами на своем сайте. Настройка заняла буквально несколько минут.
Для начала распаковал архив в домашний каталог. Изменил конфигурацию под свой сервер:

[main]
name = xmpp.kini24.ru
password = пароль_для_регистрации_компонента_на_сервере
# -- optional --
admins = admin@kini24.ru
# -- defaults --
server = 127.0.0.1
disconame = Mail.ru IM
port = 5275
reconnect = on
probe = on
show_version = on
show_os = on
psyco = off
# -- http proxy for avatars (default is none) --
# http_proxy = http://localhost:3128
# -- PID file (default is none) --
# pidfile = /var/run/mrim.pid

[profile]
type = xml
dir = /var/spool/mrim

[logger]
logfile = /var/log/openfire/mrim.log
loglevel = info
# --- logger defaults ---
# timestamp = %%d/%%m/%%y-%%H:%%M:%%S
# xml_formatting = off

Затем открыл веб-интерфейс Openfire и в разделе Настройки сервера — Внешние устройства — Разрешено подключаться (да, вот такой дурацкий перевод) добавил поддомен и пароль для подключения компонента. Без этого при попытке запуска компонента я получал только кучу сообщений типа

31/10/17-10:30:21 Connecting to XMPP server
31/10/17-10:30:22 Connection to server lost

Затем запустил транспорт:

/usr/bin/python mrim.py -c mrim.conf

Вернулся в Openfire, открыл Сеансы — Компонент сеансов, где и увидел что транспорт подключился к серверу. Затем прошел регистрацию в своем клиенте Miranda NG и попробовал написать своему другу. Полученный от него ответ оказал, что все работает нормально. Перед этим пришлось, правда, ответить на кучу запросов авторизации.
Осталось только добавить запуск транспорта в автозагрузку и настройка полностью завершена.

2017   jabber   mail.ru   openfire   настройка   подключение   сервер   транспорт

Убираем название сервера Apache

Не совсем, конечно, правильный заголовок, но какой уж есть...
Собственно, сегодня я не планировал этим заниматься, просто так вышло. На сервере установлен Apache версии 2.4. При помощи двух параметров (ServerTokens Prod и ServerSignature Off) можно сократить название сервера до банального Apache. Но убрать само название сервера «нельзя». Для того, чтобы это сделать понадобится установить или включить дополнительный модуль mod_security. У меня он установлен не был, но был в репозитории. Раньше, кстати, когда был установлен Apache версии 2.2, его там не было, поэтому приходилось довольствоваться тем, что получилось. Итак, установил модуль, включил его и... поймал ошибку при запуске сервера. Что за ошибка было поначалу не совсем понятно, поскольку ее текст уходил за пределы экрана. Пришлось вывод команды перенаправить в файл, из которого уже стало понятно, что сервер не может найти файлы конфигурации в подкаталоге модуля. Посмотрев в папке, вообще не нашел таковых. Видимо, не очень-то они и нужны. Поэтому просто закомментировал эти строчки и еще раз перезапустил сервер. На этот раз все прошло штатно, он заработал. «Хорошо», подумал я и добавил в файл конфигурации модуля строку

SecServerSignature " "

После перезапуска Apache, проверил заголовки, которые отдает сервер при подключении к сайту и убедился, что имя сервера теперь вообще не отображается. Для пущей убедительности прогнал тесты на нескольких онлайн-сервисах, которые показали, что не знают что за сервер у меня установлен.

2017   apache   безопасность   имя   настройка   сервер

Настройка VPN на OpenWrt

Доступ в домашнюю сеть

На фоне запретов на VPN и анонимайзеров, взбрело в голову прокинуть туннель в свою домашнюю сеть. Так сказать, пока это не стало противоправным действием :-) Все делал вот по этой статье. С первого раза ничего не заработало. После небольшого расследования оказалось, что клиентский сертификат неверно сгенерировался и получился файл нулевого размера. Пришлось переделывать все заново. После этого я смог подключиться к домашней сети, но у меня не было доступа ни к одному компьютеру в ней. Для доступа к ней пришлось выполнить еще одно действие из этой же статьи, из англоязычной ее части:

# uci add_list openvpn.myvpn.push='route 192.168.1.0 255.255.255.0'

Так как подсеть у меня такая же, то не пришлось править адрес и маску. После перезапуска OpnVPN на роутере все заработало: доступ в сеть есть, к компьютерам — тоже. Все работает, отлично!
Но, как обычно, показалось этого мало. Настроил OpenVPN и на смартфоне. Применение такого доступа нашлось сразу же: быстрый просмотр записей с камеры. VLC, конечно, на такой скорости плохо кэширует (надеюсь, это лечится), но снимки, которые создает motion из записанного видеофайла просмотреть можно. Уже, как говорится, хлеб.
Затем, ради интереса, заглянул на собранную метеостанцию, посмотрел как там дела обстоят. Затем зашел на роутер, проглядел папку с торрентами.
Из «минусов» подключения по VPN вижу только то, что работать приходится не с именами машин, а с их IP-адресами. Но это уже мелочи.

2017   android   openvpn   openwrt   vpn   доступ   настройка   сеть

Внедрение HTTP Strict Transport Security (HSTS) на свой сайт

Сначала небольшая выдержка из википедии:

«HSTS (сокр. от англ. HTTP Strict Transport Security) — механизм, активирующий форсированное защищённое соединение через протокол HTTPS. Данная политика безопасности позволяет сразу же устанавливать безопасное соединение, вместо использования HTTP-протокола. Механизм использует особый заголовок Strict-Transport-Security для принудительного использования браузером протокола HTTPS даже в случае перехода по ссылкам с явным указанием протокола HTTP. Механизм специфицирован в RFC6797 в ноябре 2012 года.

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

Дополнительную защиту https-соединений предоставляют методы Certificate pinning (хранение списка разрешенных для домена сертификатов или CA в исходных текстах браузера) и HTTP Public Key Pinning (англ.). Они предотвращают множество возможностей подмены tls-сертификатов https-сервера.»

Для внедрения этой технологии нам понадобится несколько вещей:

  1. Наличие валидного сертификата (можно бесплатно получить на сайте Let’s Encrypt)
  2. Уверенность в том, что будет использоваться только https протокол, включая все ваши субдомены.
  3. Полное перенаправление с http-версий сайтов на https.

Если что-то из этого по каким-то причинам вам не подходит, то эта технология вам не нужна.

Так как у меня используется «старенький» Apache версии 2.2, то и настраивать, соответственно, мы будет его. Для включения HSTS нам нужно добавить в файл /etc/httpd2/conf/sites-available/default_https.conf следующие строки:

<IfModule ssl_module>
    <VirtualHost *:443>
        Header set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
   </VirtualHost>
</IfModule>

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

Инструкция Header set позволяет вставить заголовок в ответ сервера. В данном случае заголовок «Strict-Transport-Security». В скобках за ним расположены параметры этого заголовка:

  • max-age — время в секундах, которое будет действовать этот заголовок. Если быть точнее, то это время, в течение которого сайт будет доступен по протоколу HTTPS. Не рекомендуется устанавливать его менее 18 недель;
  • includeSubDomains — указывается, если действие заголовка распространяется также на поддомены. Не является обязательным;
  • preload — параметр, позволяющий указывать, что ваш сайт никогда не будет доступен по незащищенному протоколу. Не является обязательным. Про него будет чуть ниже.

Итак, данные мы добавили, теперь нужно перезагрузить файлы конфигурации:

# service httpd2 condreload

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

Strict-Transport-Security: max-age=31536000; includeSubDomains; preload

Идем на сайт ssllabs, вводим адрес своего сайта с указанием https и тестируем, что у нас получилось. Тест занимает некоторое время, его вполне хватит на то, чтобы, например, налить себе чашечку кофе.

По итогу мы должны увидеть такие строчки:

Эту вы увидите в шапке отчета
Эту строчку вы увидите в шапке отчета
Эта будет находиться ближе к концу отчета
Эта будет находиться ближе к концу отчета

Если вы их видите, значит все в порядке. В противном случае ищите ошибку.

И, наконец, про параметр preload. Существует так называемый «preload list», в котором перечислены все домены, использующие технологию HSTS. Своего рода список «избранных» :-) При желании вы можете подать заявку на включение вашего домена в этот список, но на скорый ответ не рассчитывайте. Список обновляется с выпуском каждой версии браузера Chrome, поэтому может пройти несколько месяцев, прежде, чем вы увидите, что ваш домен добавлен в него. Для подачи заявки нужно выполнить несколько требований, указанных на главной странице сайта, поэтому рекомендую прочитать ее внимательно. Значение имеет даже регистр параметров заголовка. В случае критической ошибки после нажатия на кнопку «Check status and eligibility» фон страницы станет красным, в случае некритической — желтым, если же все верно — зеленым. На этой же странице указано, что нужно делать, чтобы удалить свой домен из этого списка.

В принципе, это все, что вам нужно знать об этой технологии защиты вашего сайта. Надеюсь, что этот текст вам помог.