在我的 Apache 配置中,有以下几行:
SSLRandomSeed connect builtin
SSLRandomSeed connect file:/dev/random
SSLRandomSeed connect file:/dev/urandom 1024
/dev/random
Apache 究竟是如何解释这一点的?它是否首先尝试内置,然后如果失败则转到?如果它使用/dev/random
,/dev/random
然后耗尽熵,它是否会自动切换到/dev/urandom
?是否有某个 Apache 文档可以解释所有这些?
答案1
Apache 文档中没有说明,但查看ssl_engine_rand.c
(此处为 apache 2.2.21)您可以看到该函数ssl_rand_seed
遍历所有定义的 SSLRandomSeed 源,最终调用 OpenSSLRAND_seed
函数,除非出现故障。
参考 OpenSSL 手册页RAND_seed
,每次成功调用它都会为 PRNG 的状态添加熵。
最后,它会询问 OpenSSL 种子是否足够RAND_status
。
因此,如果您定义多个源,它将使用所有有效的源,并结合它们的熵。