Перейти к основному содержимому
Версия: 7.0

Веб-сервер

В статье представлены примеры параметров настройки веб-серверов Apache2 и Nginx, как наиболее часто используемые для установок Пассворка.

Apache2

<VirtualHost *:443>
ServerName example.ru

SSLEngine on
SSLCertificateFile /etc/ssl/passwork/fullchain.pem
SSLCertificateKeyFile /etc/ssl/passwork/privkey.pem
SSLCertificateChainFile /etc/ssl/passwork/chain.pem # если fullchain не содержит полный путь

SSLCipherSuite "ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:
ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:
ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256"

SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
SSLHonorCipherOrder on

DocumentRoot /var/www/public
<Directory /var/www/public>
Options -Indexes +FollowSymLinks
AllowOverride All
Require all granted
</Directory>
<FilesMatch \.php$>
# DEB
#SetHandler "proxy:unix:/run/php/php8.3-fpm.sock|fcgi://localhost/"
# RPM
#SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost/"
</FilesMatch>
</VirtualHost>
    SSLUseStapling on
SSLStaplingResponderTimeout 5
SSLStaplingReturnResponderErrors off
SSLStaplingCache shmcb:/var/run/apache2/stapling_cache(128000)

SSLCipherSuite — Определить список допустимых шифров, включает только современные и стойкие алгоритмы.

SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 — Включить только современные и безопасные версии протокола TLS (TLS 1.2 и 1.3); отключает уязвимые и устаревшие (SSLv2, SSLv3, TLS 1.0/1.1).

SSLHonorCipherOrder on — Приоритизирует список шифров, заданный сервером (а не клиентом), позволяет контролировать используемые алгоритмы.

SSLSessionCache shmcb:/var/run/apache2/ssl_scache(512000) — Включить кэширование TLS-сессий с использованием SHMCB (shared memory cache), что ускоряет повторные соединения. Объём кэша: ~512 KB.

SSLSessionCacheTimeout 300 — Задать срок хранения TLS-сессий в кэше (в секундах)

SSL Stapling (OCSP Stapling) — механизм, при котором сервер сам запрашивает статус TLS-сертификата у удостоверяющего центра (CA) и прикладывает его к TLS-сессии. Это ускоряет подключение и снижает нагрузку на CA, улучшая конфиденциальность клиента.

осторожно

Используйте OCSP Stapling только если ваш сервер Пассворк может обращаться к публичным DNS серверам.

SSLUseStapling on — Включить поддержку OCSP Stapling - сервер сам прикладывает статус TLS-сертификата от CA к соединению, повышая производительность и приватность.

SSLStaplingResponderTimeout 5 — Максимальное время ожидания ответа от OCSP-сервера (CA) - если за 5 секунд нет ответа, запрос считается неудачным.

SSLStaplingReturnResponderErrors off — Если OCSP-сервер не отвечает, не отправлять ошибку клиенту. Cоединение всё равно разрешается (повышает устойчивость в нестабильных сетях).

SSLStaplingCache shmcb:/var/run/apache2/stapling_cache(128000) — Кэш OCSP-ответов в общей памяти, объёмом ~128 KB это снижает частоту обращений к CA.

SSLSessionTickets off — По умолчанию тикеты включены, так как это позволяет ускорить установление TLS-соединений за счёт повторного использования параметров предыдущих сессий, снижая нагрузку на сервер. Отключение будет действовать только на подключения, использующие TLS 1.2. Для TLS 1.3 управление выполняется OpenSSL и Apache2 не может отключить их использование.

Nginx

		listen 443 ssl default_server;
ssl_certificate /server/ssl/fullchain.pem;
ssl_certificate_key /server/ssl/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:
ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:
ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256';
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:50m;
ssl_session_timeout 1d;
ssl_stapling on;
ssl_stapling_verify on;
resolver 77.88.8.8 185.222.222.222 valid=300s;
resolver_timeout 5s;

ssl_protocols TLSv1.2 TLSv1.3; — Ограничить допустимые версии TLS только безопасные - отключить устаревшие и уязвимые SSL/TLS протоколы (TLS 1.0/1.1).

ssl_ciphers — Определить список допустимых шифров - включает только современные и стойкие алгоритмы.

ssl_prefer_server_ciphers on; — Указывать использовать приоритет шифров сервера (а не клиента), повышает контроль над безопасностью соединения.

ssl_session_cache shared:SSL:50m; — Включить кэширование TLS-сессий между соединениями на 50 Мб, ускоряет повторные подключения и снижает нагрузку.

ssl_session_timeout 1d; — Задать срок жизни сессий в кэше - клиент может повторно использовать TLS-сессию в течение суток, если кэш не очищен.

SSL Stapling (OCSP Stapling) — механизм, при котором сервер сам запрашивает статус TLS-сертификата у удостоверяющего центра (CA) и прикладывает его к TLS-сессии. Это ускоряет подключение и снижает нагрузку на CA, улучшая конфиденциальность клиента.

осторожно

Использовать OCSP Stapling только если Пассворк может обращаться к публичным DNS серверам.

ssl_stapling on; — Включить OCSP Stapling - сервер сам предоставляет свежий статус сертификата, ускоряя проверку и улучшая приватность клиента.

ssl_stapling_verify on; — Обязывает сервер проверять подлинность ответа OCSP у корневого CA, чтобы не отдавать недействительный или подделанный статус.

resolver 77.88.8.8 185.222.222.222 valid=300s; — Указывать DNS-серверы для резолвинга (например, для OCSP); кэшируется на 5 минут. В примере использованы Яндекс DNS и DNS.SB.

resolver_timeout 5s; — Максимальное время ожидания ответа от DNS - если не ответит за 5 секунд, запрос считается неудачным.

ssl_session_tickets off; — Отключить сессионные тикеты TLS.

По умолчанию тикеты включены, так как это позволяет ускорить установление TLS-соединений за счёт повторного использования параметров предыдущих сессий, снижая нагрузку на сервер. Отключение имеет смысл только при одновременном выполнении всех следующих условий:

  • Приложение работает на нескольких серверах;
  • Используется один wildcard-сертификат на всех инстансах;
  • Серверы распределены по разным дата-центрам, и отсутствует централизованное управление TLS-сессионными ключами.