Spec-Zone.ru › Apache HTTP Server

Модуль 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API