En la práctica, la razón más común para que esto suceda parece ser que el archivo .rnd en su directorio personal es propiedad de root en lugar de su cuenta. La solución rápida:
sudo rm ~/.rnd
Para obtener más información, aquí está la entrada de las preguntas frecuentes de OpenSSL :
A veces, la utilidad de línea de comandos openssl no aborta con un mensaje de error "PRNG no sembrado", pero se queja de que es "incapaz de escribir 'estado aleatorio'". Este mensaje hace referencia al archivo de inicialización predeterminado (consulte la respuesta anterior). Una posible razón es que no se conoce un nombre de archivo predeterminado porque ni RANDFILE ni HOME están configurados. (Las versiones hasta 0.9.6 usaron el archivo ".rnd" en el directorio actual en este caso, pero esto ha cambiado con 0.9.6a.)
Entonces verificaría RANDFILE, HOME y permisos para escribir en esos lugares en el sistema de archivos.
Si todo parece estar en orden, puede intentar correr con strace y ver qué está sucediendo exactamente.
sudo chown user:user ~/.rnd
hizo que todo saliera bien.sudo
cosa y funcionó. Pero, ¿por qué todavía tengo un.rnd
directorio creado por root en mi $ HOME después de crear un certificado autofirmado?/var/www/.rnd
y ajustándolowww-data
. (Suponiendo que esa/var/www
seawww-data
la carpeta de inicio, que está en la mayoría de los sistemas. Puede verificarwww-data
la carpeta de inicio concat /etc/passwd | grep www-data
)Sé que esta pregunta está en Linux, pero en Windows tuve el mismo problema. Resulta que debe iniciar el símbolo del sistema en modo "Ejecutar como administrador" para que funcione. De lo contrario, obtienes lo mismo: no se puede escribir el error de 'estado aleatorio'.
fuente
set RANDFILE=.rnd
antes de ejecutaropenssl
.$env:RANDFILE=".rnd"
más queset RANDFILE=.rnd
.¡Otro problema en la plataforma Windows, asegúrese de ejecutar su símbolo del sistema como usuario administrativo!
No sé cuántas veces esto me ha mordido ...
fuente
Aparentemente, necesitaba ejecutar OpenSSL como root para que tuviera permiso para el archivo inicial.
fuente
Tuve lo mismo en el servidor de Windows. Entonces descubrí cambiando lo
vars.bat
que es:luego rehacer desde el principio y todo debería estar bien.
fuente
set HOME=.
El problema para mí fue que tenía .rnd en mi directorio personal pero era propiedad de root. Eliminarlo y volver a emitir el comando openssl solucionó esto.
fuente
Debe establecer la variable de entorno $ RANDFILE y / o crear el archivo $ HOME / .rnd. ( Preguntas frecuentes de OpenSSL ). (Por supuesto, debe tener derechos sobre ese archivo. Otras respuestas aquí son sobre eso. Pero primero debe tener el archivo y una referencia a él).
Hasta la versión 0.9.6 OpenSSL escribió el archivo inicial 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.6by posterior se comportará de manera similar a 0.9.6a, pero usará un valor predeterminado de "C: \" para HOME en los sistemas Windows si la variable de entorno no se ha configurado.
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, consulte la documentación que viene con la aplicación.
fuente
Me he encontrado con este problema hoy en AWS Lambda. Creé una variable de entorno RANDFILE = /tmp/.random
Eso hizo el truco.
fuente