Модуль Apache mod_session_crypto
| Описание: | Поддержка шифрования сессий |
|---|---|
| Статус: | Экспериментальный |
| Идентификатор модуля: | session_crypto_module |
| Файл исходного кода: | mod_session_crypto.c |
| Совместимость: | Доступен в Apache 2.3 и более поздних версиях |
Краткое описание
Предупреждение
Модули сессий используют HTTP-куки и, как следствие, могут стать жертвами атак типа Cross-Site Scripting или раскрывать потенциально конфиденциальную информацию клиентам. Пожалуйста, убедитесь, что соответствующие риски учтены перед включением функциональности сессий на вашем сервере.
Этот подмодуль mod_session обеспечивает поддержку шифрования пользовательских сессий перед записью в локальную базу данных или отправкой удалённому браузеру через HTTP-куки.
Это может помочь защитить конфиденциальность пользовательских сессий, когда содержимое сессии должно оставаться конфиденциальным для пользователя или когда необходима защита от атак типа Cross-Site Scripting.
Для получения более подробной информации о пользовательском интерфейсе сессий см. документацию модуля mod_session.
Основное использование
Чтобы создать простую зашифрованную сессию и сохранить её в куки под названием 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