| Директива SSLRandomSeed
Описание: | Источник заполнения генератора псевдослучайных чисел (PRNG) |
Синтаксис: | SSLRandomSeed context source
[bytes] |
Контекст: | конфигурация сервера |
Статус: | Расширение |
Модуль: | mod_ssl |
Это настраивает один или несколько источников для заполнения генератора псевдослучайных чисел (PRNG) в OpenSSL во время запуска ( context is
startup ) и/или непосредственно перед установкой нового соединения SSL ( context is connect ). Эту директиву можно использовать только в глобальном контексте сервера, поскольку PRNG является глобальным средством.
Доступны
следующие варианты исходников :
-
builtin
Это всегда доступный встроенный источник заполнения. Его использование потребляет минимальные циклы ЦП во время выполнения и, следовательно, может всегда использоваться без недостатков. Источник, используемый для заполнения PRNG, содержит текущее время, текущий идентификатор процесса и (если применимо) случайно выбранный фрагмент 1 КБ структуры межпроцессного табло результатов Apache. Недостатком является то, что это не очень сильный источник, и во время запуска (когда табло по-прежнему недоступно) этот источник просто производит несколько байтов энтропии. Поэтому вы всегда должны, по крайней мере, для запуска, использовать дополнительный источник заполнения.
-
file:/path/to/source
Этот вариант использует внешний файл /path/to/source в качестве источника для заполнения PRNG. Когда указано количество байтов , только первые байты числа байтов файла образуют энтропию (и
байты задаются /path/to/source в качестве первого аргумента). Когда байты не указаны, весь файл формирует энтропию (и 0 задается /path/to/source в качестве первого аргумента). Используйте это особенно во время запуска, например, с доступными /dev/random и/или
/dev/urandom устройствами (которые обычно существуют в современных производных Unix, таких как FreeBSD и Linux).
Но будьте осторожны : обычно /dev/random предоставляет столько данных энтропии, сколько есть на самом деле, т. е. когда вы запрашиваете 512 байтов энтропии, но в настоящее время на устройстве доступно только 100 байтов, могут произойти две вещи: на некоторых платформах вы получаете только 100 байтов, в то время как на на других платформах чтение блокируется до тех пор, пока не будет доступно достаточное количество байтов (что может занять много времени). Здесь лучше использовать существующий /dev/urandom , потому что он никогда не блокируется и фактически дает количество запрошенных данных. Недостаток как раз в том, что качество получаемых данных может быть не самым лучшим.
-
exec:/path/to/program
Этот вариант использует внешний исполняемый файл
/path/to/program в качестве источника для заполнения PRNG. Когда указано
количество байтов , только первые байты числа байтов его stdout содержимого образуют энтропию. Когда байты не указаны, все данные, полученные в stdout форме энтропии. Используйте это только во время запуска, когда вам нужна очень сильная раздача с помощью внешней программы (например, как в приведенном выше примере с утилитой, которую truerand вы можете найти в дистрибутиве mod_ssl, основанном на библиотеке AT&T
truerand ). Использование этого в контексте подключения, конечно, слишком резко замедляет работу сервера. Поэтому обычно вам следует избегать использования внешних программ в этом контексте.
-
egd:/path/to/egd-socket (только для Unix)
Этот вариант использует сокет домена Unix внешнего демона сбора энтропии (EGD) (см. http://www.lothar.com/tech/crypto/) для заполнения PRNG. Используйте это, если на вашей платформе нет случайных устройств.
Пример SSLRandomSeed startup builtin
SSLRandomSeed startup "file:/dev/random"
SSLRandomSeed startup "file:/dev/urandom" 1024
SSLRandomSeed startup "exec:/usr/local/bin/truerand" 16
SSLRandomSeed connect builtin
SSLRandomSeed connect "file:/dev/random"
SSLRandomSeed connect "file:/dev/urandom" 1024
|
|