Apache如何解释多个SSLRandomSeed来源

在我的Apacheconfiguration中,我有这些行:

SSLRandomSeed connect builtin SSLRandomSeed connect file:/dev/random SSLRandomSeed connect file:/dev/urandom 1024 

Apache究竟如何解释这一点? 它是否首先尝试内置,然后移动到/dev/random如果失败? 如果它使用/dev/random ,并且/dev/random然后用完熵,它会自动切换到/dev/urandom ? 有没有解释这一切的Apache文档?

在Apache文档中没有说明,但是看看ssl_engine_rand.c (这里是apache 2.2.21),你可以看到函数ssl_rand_seed遍历所有定义的SSLRandomSeed源,最终调用OpenSSL RAND_seed函数,除非失败。

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

最后,通过RAND_status询问OpenSSL是否足够播种。

所以,如果你定义了很多来源,它将使用所有这些工作,并结合他们的熵。