I have traced through the mod_ssl and the OpenSSL FIPS code as best I can and I believe that the SSLRandomSeed
configuration parameter given in the mod_ssl.conf
file simply doesn't do anything useful when FIPS mode is enabled in mod_ssl.
Tracing the code in ssl_init_Module()
appears to show that the function ssl_rand_seed()
is called before FIPS mode is set. ssl_rand_seed()
will perform seeding from the given SSLRandomSeed defined source(s), but once you switch to FIPS mode, the DRBG is re-created from scratch without retaining any of the information.
In fact, OpenSSL's FIPS mode appears to go out of its way to source from /dev/urandom, /dev/random and /dev/srandom (in that order) according to the DEVRANDOM macro defined in the OpenSSL base code e_os.h when compiled for a standard Linux target.
Does anyone have any experience with this combination?
Can they comment on how to provide a run-time selected entropy source such as a processed file? Do I have to recompile OpenSSL and supplying a new DEVRANDOM definition each time I want to change my randomness source?