java慢:熵相关问题

sou*_*ser 2 java jboss tomcat weblogic

我遇到了一个问题,当使用SSL时java很慢.解决方案是添加

-Djava.security.egd=file:/dev/./urandom
到命令行的java.由于我有多个JVM,我不想修改每个JVM以包含此字符串,因此希望将其添加到文件中
$JAVA_HOME/jre/lib/security/java.security

现在,java.security文件已经包含了

securerandom.source=file:/dev/urandom

两个问题:

  1. 为什么以及如何"/ dev/urandom"与"/dev/./urandom"不同.为什么java不接受"/ dev/urandom"
  2. 对于我运行的JVM,如何判断他们是否使用了正确的urandmon设备(vs random)

Jim*_*son 5

这实际上是在1.3或1.4天内引入JVM的hack

http://bugs.sun.com/view_bug.do?bug_id=4705093

http://bugs.sun.com/view_bug.do?bug_id=6202721

基本问题是,在本机JVM代码中,它们硬编码/dev/urandom实际用于/dev/random尝试确保足够的熵.由于/dev/urandom应该保证不阻止,如果没有足够的熵可用,则会产生阻塞的意外后果.

硬编码专门针对字符串/dev/urandom,因此提供解析相同但不匹配的内容会导致所需的行为.如果您编码/dev/./urandom,则绕过硬编码别名并获得预期的urandom熵源.