entre diferencias java tomcat jboss weblogic

java - diferencias - tomcat vs jetty



java slow: problema relacionado con la entropĂ­a (2)

Esto es en realidad un truco introducido en la JVM en 1.3 o 1.4 días

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

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

El problema básico es que en el código JVM nativo codificaban /dev/urandom para usar realmente /dev/random para intentar asegurar suficiente entropía. Como se supone que /dev/urandom se debe garantizar que no se bloquee, esto tiene la consecuencia involuntaria de bloqueo si no hay suficiente entropía disponible.

La hardcoding busca específicamente la cadena /dev/urandom , por lo que proporciona algo que se resuelve en la misma cosa pero no coincide, lo que causa el comportamiento deseado. Si codifica /dev/./urandom el alias de codificación fija y llega a la fuente de entropía urandom deseada.

Me encuentro con un problema donde java es lento cuando se usa sobre SSL. La solución es agregar

-Djava.security.egd=file:/dev/./urandom a java en la línea de comando. Como tengo varias JVM, no quiero modificar cada JVM para que contenga esta cadena y, por lo tanto, me gustaría agregarla al archivo

$JAVA_HOME/jre/lib/security/java.security

Ahora, el archivo java.security ya contiene

securerandom.source=file:/dev/urandom

Dos preguntas sobre esto:

  1. Por qué y cómo es "/ dev / urandom" diferente de "/dev/./urandom". Por qué java no acepta "/ dev / urandom"
  2. Para las JVM que tengo en ejecución, ¿cómo puedo saber si están usando el dispositivo urandmon correcto (al azar)?

No recomendaría usar urandom para SSL. Su problema es que su máquina no tiene suficiente entropía y usar urandom no resuelve este problema. Asumiendo su en Linux puede verificar la entropía disponible con:

cat /proc/sys/kernel/random/entropy_avail

Si está en una máquina que tiene un generador de números aleatorios hw, lo más probable es que desee instalar rngd. Puede verificar si su CPU tiene uno al emitir el comando:

cat /proc/cpuinfo

Busque banderas llamadas rand . También puede verificar si el archivo / dev / hwrng está presente. Puede tener / querer cargar el módulo correspondiente:

ls /lib/modules/*/kernel/drivers/char/hw_random

Para mí esto es:

sudo modprobe tpm-rng

Para hacerlo permanente:

echo tpm-rng | sudo tee -a /etc/modules

Si usted está en Ubuntu / Debian solo instale el paquete rng-tools.

sudo aptitude install rng-tools

Si revisa su entropía antes y después de instalar las herramientas rng, verá un aumento significativo.

El siguiente comando debería mostrarle las fuentes de entropía disponibles:

sudo rngd -f -r /dev/hwrng -v

Tenga en cuenta que si necesita una mejor seguridad, desea mezclar varias fuentes de entropía. No estoy seguro de que rng-tools lo admita.