Usando OpenSSL, ¿qué significa “no se puede escribir ‘estado aleatorio'”?

Estoy generando un certificado SSL autofirmado para proteger la sección de administración de mi servidor, y sigo recibiendo este mensaje de OpenSSL:

incapaz de escribir ‘estado aleatorio’

¿Qué significa esto?

Esto está en un servidor Ubuntu. Actualicé libssl para corregir la vulnerabilidad de seguridad reciente .

En la práctica, la razón más común de que esto ocurra parece ser que el archivo .rnd en su directorio de inicio es propiedad de la raíz en lugar de su cuenta. La solución rápida:

sudo rm ~/.rnd 

Para obtener más información, esta es la entrada de las preguntas frecuentes de OpenSSL :

A veces, la utilidad de línea de comando openssl no aborta con un mensaje de error “PRNG no sembrado”, pero se queja de que “no se puede escribir ‘estado aleatorio'”. Este mensaje se refiere al archivo inicial de siembra (ver respuesta anterior). Una posible razón es que no se conoce ningún nombre de archivo predeterminado porque no se ha configurado RANDFILE ni HOME. (Las versiones de hasta 0.9.6 usaron el archivo “.rnd” en el directorio actual en este caso, pero esto ha cambiado con 0.9.6a).

Así que verificaría RANDFILE, HOME y los permisos para escribir en esos lugares en el sistema de archivos.

Si todo parece estar en orden, puedes intentar correr con strace y ver qué está sucediendo exactamente.

Sé que esta pregunta es sobre Linux, pero en Windows tuve el mismo problema. Resulta que debe iniciar el símbolo del sistema en el modo “Ejecutar como administrador” para que funcione. De lo contrario, obtienes lo mismo: no se puede escribir el error de “estado aleatorio”.

Otro problema en la plataforma de Windows, asegúrese de que está ejecutando el símbolo del sistema como un usuario administrativo.

No sé cuántas veces esto me ha mordido …

Aparentemente, necesitaba ejecutar OpenSSL como root para que tenga permiso para el archivo de siembra.

Tenía lo mismo en el servidor de Windows. Luego me di cuenta cambiando el vars.bat que es:

 set HOME=C:\Program Files (x86)\OpenVPN\easy-rsa 

luego rehace desde el principio y todo debería estar bien.

El problema para mí era que tenía .rnd en mi directorio de inicio pero era propiedad de root. Eliminarlo y volver a ejecutar el comando openssl solucionó esto.

Debe establecer la variable de entorno $ RANDFILE y / o crear el archivo $ HOME / .rnd. ( Preguntas frecuentes sobre OpenSSL ). (Por supuesto, debe tener derechos sobre ese archivo. Otras respuestas aquí son sobre eso. Pero primero debe tener el archivo y una referencia al mismo).

Hasta la versión 0.9.6 OpenSSL escribió el archivo de siembra en el directorio actual en el archivo “.rnd”. En la versión 0.9.6a no tiene un archivo de inicialización predeterminado. OpenSSL 0.9.6b y posteriores se comportarán de manera similar a 0.9.6a, pero usarán un valor predeterminado de “C: \” para HOME en los sistemas Windows si la variable de entorno no se ha establecido.

Si el archivo de inicialización predeterminado no existe o es demasiado corto, puede aparecer el mensaje de error “PRNG no sembrado”.

La variable de entorno $ RANDFILE y $ HOME / .rnd solo son utilizados por las herramientas de línea de comandos de OpenSSL. Las aplicaciones que usan la biblioteca OpenSSL proporcionan sus propias opciones de configuración para especificar la fuente de entropía, por favor revisa la documentación que viene con la aplicación.