General advice
Any program written in Java
Add
-Djava.security.egd=file:///dev/urandom switch
or
-Djava.security.egd=file:/dev/./urandom
to the command line invocation used to start the Java process. (Without this, Java uses /dev/random
to seed its SecureRandom class
, which can cause Java code to block unexpectedly.)
Alternatively, in the $JAVA_HOME/jre/lib/security/java.security
configuration file, add the line
securerandom.source=file:/dev/./urandom
Footnote: In the above examples, you need the crazy-looking filename, e.g., the extra /./
, to trick Java into accepting your filename. If you just use /dev/urandom
, Java decides you didn't really mean it and replaces what you wrote with /dev/random
. Craziness!
Chroot
If you are starting some service in a chroot environment, don't forget to create the /dev/urandom
device inside your chroot directory.
Specific software
Apache mod_ssl
Use
SSLRandomSeed startup file:/dev/urandom 512
SSLRandomSeed connect file:/dev/urandom 512
in the mod_ssl configuration file. Avoid using file:/dev/random
with SSLRandomSeed
.
Cyrus POP3, IMAPD, and SASL
Compile Cyrus SASL (libsasl) with the configuration flag --with-devrandom=/dev/urandom
.
By default, Cyrus POP3 reads from /dev/random
. I couldn't find any configuration setting to change this, short of recompiling.
OpenLDAP
Add
TLSRandFile /dev/urandom
to the slapd.conf
configuration file. (This hopefully should be the default, but some guides misleadingly suggest using /dev/random
, so you might want to double-check.)
Postfix
Use
tls_random_source = dev:/dev/urandom
in the main.cf
configuration file, or
sudo postconf -e 'tls_random_source = dev:/dev/urandom'
from the command line.