Веб-сервер
В статье представлены примеры параметров настройки веб-серверов Apache2 и Nginx, как наиболее часто используемые для установок Пассворка.
Apache2
- Файл виртуального хоста 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>
- Часть файла конфигурации модуля SSL для Apache2
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
- Часть файла настройки сайта 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-сессионными ключами.