Apache 如何解释多个 SSLRandomSeed 源

use*_*042 7 ssl mod-ssl apache-2.2 entropy-pool

在我的 Apache 配置中,我有以下几行:

SSLRandomSeed connect builtin
SSLRandomSeed connect file:/dev/random
SSLRandomSeed connect file:/dev/urandom 1024
Run Code Online (Sandbox Code Playgroud)

Apache 如何解释这一点?它是否首先尝试内置,然后/dev/random在失败时转向?如果它使用/dev/random/dev/random然后用完熵,它会自动切换到/dev/urandom吗?是否有一个 Apache 文档可以解释所有这些?

b0f*_*0fh 5

Apache 文档中没有说明,但是查看ssl_engine_rand.c(此处的 apache 2.2.21)您可以看到该函数ssl_rand_seed迭代所有定义的 SSLRandomSeed 源,最终调用 OpenSSLRAND_seed函数,除非出现故障。

参考 OpenSSL 手册页RAND_seed,每次成功调用它都会将熵添加到 PRNG 的状态。

最后,它会询问 OpenSSL 的播种是否足够RAND_status

因此,如果您定义了许多来源,它将使用所有这些有效的来源,并结合它们的熵。