Модуль Apache mod_session_crypto
| Описание: | Поддержка шифрования сеансов |
|---|---|
| Статус: | Экспериментальный |
| Идентификатор модуля: | session_crypto_module |
| Исходный файл: | mod_session_crypto.c |
| Совместимость: | Доступен в Apache 2.3 и более поздних версиях |
Общие сведения
Предупреждение
Модули сеансов используют файлы cookie HTTP и поэтому могут подвергаться атакам межсайтового скриптинга или раскрывать клиентам потенциально конфиденциальную информацию. Прежде чем включать функциональность сеансов на сервере, убедитесь, что соответствующие риски учтены.
Этот подмодуль mod_session поддерживает шифрование пользовательских сеансов перед записью в локальную базу данных или отправкой в удаленный браузер с помощью файла cookie HTTP.
Это может помочь обеспечить конфиденциальность пользовательских сеансов, если их содержимое должно оставаться недоступным пользователю, или если требуется защита от последствий атак межсайтового скриптинга.
Дополнительные сведения об интерфейсе сеансов см. в документации модуля mod_session.
Основы использования
Чтобы создать простой зашифрованный сеанс и сохранить его в файле cookie с именем session, настройте сеанс следующим образом:
Зашифрованный сеанс на основе браузера
Session On SessionCookieName session path=/ SessionCryptoPassphrase secret
Сеанс будет зашифрован с помощью указанного ключа. Чтобы несколько серверов могли совместно использовать сеансы, настройте на каждом сервере один и тот же ключ шифрования.
При изменении ключа шифрования сеансы будут автоматически аннулированы.
Сведения об использовании сеанса для хранения имени пользователя и пароля см. в документации модуля mod_auth_form.
Директива SessionCryptoCipher
| Описание: | Криптографический алгоритм для шифрования сеанса |
|---|---|
| Синтаксис: | SessionCryptoCipher name |
| Значение по умолчанию: | SessionCryptoCipher aes256 |
| Контекст: | конфигурация сервера, виртуальный хост, каталог, .htaccess |
| Статус: | Экспериментальный |
| Модуль: | mod_session_crypto |
| Совместимость: | Доступна в Apache 2.3.0 и более поздних версиях |
Директива SessionCryptoCipher задает алгоритм, используемый при шифровании. Если алгоритм не указан, по умолчанию используется aes256.
Допустимые значения зависят от используемого криптографического драйвера. Возможны следующие значения:
- 3des192
- aes128
- aes192
- aes256
Директива SessionCryptoDriver
| Описание: | Криптографический драйвер для шифрования сеанса |
|---|---|
| Синтаксис: | SessionCryptoDriver name [param[=value]] |
| Значение по умолчанию: | none |
| Контекст: | конфигурация сервера |
| Статус: | Экспериментальный |
| Модуль: | mod_session_crypto |
| Совместимость: | Доступна в Apache 2.3.0 и более поздних версиях |
Директива SessionCryptoDriver задает имя криптографического драйвера, используемого для шифрования. Если драйвер не указан, по умолчанию используется рекомендуемый драйвер, скомпилированный в APR-util.
Для настройки криптографического драйвера NSS требуются некоторые параметры. Их указывают после имени драйвера; для каждого параметра можно задать значение.
NSS без базы данных сертификатов
SessionCryptoDriver nss
NSS с базой данных сертификатов
SessionCryptoDriver nss dir=certs
NSS с базой данных сертификатов и параметрами
SessionCryptoDriver nss dir=certs key3=key3.db cert7=cert7.db secmod=secmod
NSS с путями, содержащими пробелы
SessionCryptoDriver nss "dir=My Certs" key3=key3.db cert7=cert7.db secmod=secmod
Криптографический драйвер NSS мог быть уже настроен другой частью сервера, например модулем mod_nss или mod_ldap. Если обнаружится, что драйвер уже настроен, в журнал будет записано предупреждение, а существующая конфигурация вступит в силу. Чтобы избежать этого предупреждения, используйте параметр noinit следующим образом.
NSS с базой данных сертификатов
SessionCryptoDriver nss noinit
Во избежание путаницы убедитесь, что все модули, которым требуется NSS, настроены с одинаковыми параметрами.
Криптографический драйвер openssl поддерживает необязательный параметр для указания механизма, используемого при шифровании.
OpenSSL с поддержкой механизмов
SessionCryptoDriver openssl engine=name
Директива SessionCryptoPassphrase
| Описание: | Ключ, используемый для шифрования сеанса |
|---|---|
| Синтаксис: | SessionCryptoPassphrase secret [ secret ... ] |
| Значение по умолчанию: | none |
| Контекст: | конфигурация сервера, виртуальный хост, каталог, .htaccess |
| Статус: | Экспериментальный |
| Модуль: | mod_session_crypto |
| Совместимость: | Доступна в Apache 2.3.0 и более поздних версиях |
Директива SessionCryptoPassphrase задает ключи для симметричного шифрования содержимого сеанса перед его записью и расшифрования содержимого после чтения сеанса.
Ключи надежнее, если они длинные и состоят из действительно случайных символов. Изменение ключа на сервере приводит к аннулированию всех существующих сеансов.
Для поддержки ротации ключей можно указать несколько ключей. Первый указанный ключ будет использоваться для шифрования, а для расшифрования будут проверяться все указанные ключи. Чтобы ротировать ключи на нескольких серверах в течение некоторого времени, добавьте новый секрет в конец списка, а после его полного развертывания на всех серверах удалите первый ключ из начала списка.
Начиная с версии 2.4.7, если значение начинается с exec:, указанная команда будет выполнена, а в качестве ключа будет использоваться первая строка, возвращенная программой в стандартный вывод.
#key used as-is SessionCryptoPassphrase secret #Run /path/to/program to get key SessionCryptoPassphrase exec:/path/to/program #Run /path/to/otherProgram and provide arguments SessionCryptoPassphrase "exec:/path/to/otherProgram argument1"
Директива SessionCryptoPassphraseFile
| Описание: | Файл, содержащий ключи для шифрования сеанса |
|---|---|
| Синтаксис: | SessionCryptoPassphraseFile filename |
| Значение по умолчанию: | none |
| Контекст: | конфигурация сервера, виртуальный хост, каталог |
| Статус: | Экспериментальный |
| Модуль: | mod_session_crypto |
| Совместимость: | Доступна в Apache 2.3.0 и более поздних версиях |
Директива SessionCryptoPassphraseFile задает имя конфигурационного файла, содержащего ключи для шифрования или расшифрования сеанса, по одному ключу в строке. Файл считывается при запуске сервера; чтобы httpd применил изменения ключей, потребуется выполнить плавный перезапуск.
В отличие от директивы SessionCryptoPassphrase, ключи не отображаются в конфигурации httpd; их можно скрыть, установив для файла соответствующие права доступа.
Для поддержки ротации ключей можно указать несколько ключей. Первый указанный ключ будет использоваться для шифрования, а для расшифрования будут проверяться все указанные ключи. Чтобы ротировать ключи на нескольких серверах в течение некоторого времени, добавьте новый секрет в конец списка, а после его полного развертывания на всех серверах удалите первый ключ из начала списка.
© 2018 The Apache Software Foundation
Licensed under the Apache License, Version 2.0.
https://httpd.apache.org/docs/2.4/en/mod/mod_session_crypto.html