В качестве «развлечения выходного дня» захотелось допилить свой карманнный сайтик до наиполнейшего соответствия современным механизмам защиты и оптимизации. Сертификат Lets’encrypt есть, angie свеженький есть, всякие вспомогательные приблуды в наличии.
Далее по списку:
- brotli: с этим всё просто, включил и работает.
- brotli_static: аналогично, скриптиком прогнал изменившиеся за сутки файлики и всё работает.
- fastcgi_cache: после некоторых шаманских действий локальный TTFB скукожился со 175 до 15-18мс.
- memcached: сессии, кэш объектов — это настолько классика что уже даже почти анахронизм.
- minify: с одной стороны, легко и просто, так же как с brotli_static, а с другой — гарантированные грабли с CSP при выдаче свежеминифицированных стилей и скриптов — хэш-суммы надо пересчитывать для всего.
- HSTS: директива доставила веселья на поддоменах, архивные сайты тоже пришлось на https переводить. А они стааарые…
- SSL: С одной стороны всё получилось чудненько, A+ и всё такое. А с другой стороны — Андроиды 5 и 6, и все старые версии Сафари в пролёте.
- OCSP stapling: С бесплатным сертификатом пока получилось только довести до offered, not revoked. OCSP must staple на постоянку даже пытаться включать не буду, это для больших дядек с надёжными хостингами, а не для домашнего сервера. Ради эксперимента, разве что, и ненадолго.
- CSP: Вот тут пришлось попотеть. Полноценно настроить эту политику без допиливания бэкенда хлопотно и не очень правильно, наверное. Но возможно. Наверное. Может быть. Но это не точно. Поиск всех внедряемых и загружаемых элементов, генерация скриптом простыни для sub_filter, изготовление хэшей для всего что доблестные программисты напихали прямо в html отдаваемый бэком… Очень зависит от культуры производства бэкенда, а с этим сейчас … разнообразно… В итоге внешними и внутренними средствами получилось добиться состояния «всё зелёненькое» на тестах.
- Прочие Security Headers: без особых хлопот, ачивка получена.
- DNS CAA: нет технической возможности включить такую запись у вебнеймса. Странно, но факт.
- DNSSEC: аналогично, формально включить можно, а по факту нет.
- HTTP/2: штатно работает
- HTTP/3: работает.
- QUIC: работает
- IPv6: Работает.
- TLS 1.3 без затей из коробки, Angie в этом удобен.
- Pagespeed: тут тоже были некоторые странные эпизоды при внедрении minify+CSP, но всё удачно разрешилось.
В целом, урожаем зелёненьких галочек, плюсиков и циферок удовлетворён. Ещё есть ГОСТ-шифрование, которое тоже стоит поковырять. Пока не знаю, получится ГОСТ совместить с QUIC или нет.
2024-03-09: С HTTP/3 дело было, похоже, в роутере: стоило прошить его на openwrt, как всё наладилось.
2024-07-29: Ростелеком ещё не совсем освоил IPv6. Исходящие соединения пожалуйста, входящие — ой, а что это у нас адрес совсем прям динамический внешний. Деревенский провайдер даёт отличную поддержку IPv6 со статическими адресами аж диапазона /64
Договор с Ростелекомом расторгнут (да, я в курсе, ждём-с документального подтверждения)