Debe establecer la variable de entorno $ RANDFILE y/o crear archivo $ HOME/.rnd. (OpenSSL FAQ). (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.
Mi sistema me estaba dando este problema porque el archivo ".rnd" era propiedad de root en lugar de mi usuario. Un rápido 'sudo chown usuario: usuario ~/.rnd' hizo que todo salga bien. – HalfBrian
Tuve el mismo problema que OP. Hice lo de 'sudo' y funcionó. Pero ¿por qué todavía tengo un directorio '.rnd' importado por root en mi $ HOME después de crear un certificado autofirmado? –
Sí, si se ejecuta desde el servidor web php, el usuario es www-data, y debe agregar "export" antes de cada openssl: shell_exec ('export RANDFILE = ". Rnd"; openssl ecparam -genkey -name secp256k1')) – diyism