En pratique, la raison la plus courante de ce problème semble être que le fichier .rnd de votre répertoire personnel appartient à root plutôt qu'à votre compte. La solution rapide:
sudo rm ~/.rnd
Pour plus d'informations, voici l'entrée de la FAQ OpenSSL :
Parfois, l'utilitaire de ligne de commande openssl n'interrompt pas avec un message d'erreur "PRNG non prédéfini", mais se plaint qu'il est "incapable d'écrire 'état aléatoire'". Ce message fait référence au fichier d'amorçage par défaut (voir la réponse précédente). Une raison possible est qu'aucun nom de fichier par défaut n'est connu car ni RANDFILE ni HOME ne sont définis. (Les versions jusqu'à 0.9.6 utilisaient le fichier ".rnd" dans le répertoire courant dans ce cas, mais cela a changé avec 0.9.6a.)
Je vérifierais donc RANDFILE, HOME et les autorisations pour écrire à ces endroits dans le système de fichiers.
Si tout semble être en ordre, vous pouvez essayer de courir avec strace et voir ce qui se passe exactement.
Ville Laurikari
la source
sudo chown user:user ~/.rnd
tout a fonctionné.sudo
chose et cela a fonctionné. Mais pourquoi ai-je toujours un.rnd
répertoire racine par racine dans mon $ HOME après avoir créé un certificat auto-signé?/var/www/.rnd
et en le reprenantwww-data
. (En supposant que/var/www
c'estwww-data
le dossier personnel de, qui se trouve sur la plupart des systèmes. Vous pouvez vérifierwww-data
le dossier personnel decat /etc/passwd | grep www-data
) avecJe sais que cette question est sur Linux, mais sur Windows, j'ai eu le même problème. Il s'avère que vous devez démarrer l'invite de commande en mode "Exécuter en tant qu'administrateur" pour que cela fonctionne. Sinon, vous obtenez le même: impossible d'écrire l'erreur «état aléatoire».
la source
set RANDFILE=.rnd
exécuter avantopenssl
.$env:RANDFILE=".rnd"
plutôt queset RANDFILE=.rnd
.Un autre problème sur la plate-forme Windows, assurez-vous que vous exécutez votre invite de commande en tant qu'administrateur!
Je ne sais pas combien de fois cela m'a mordu ...
la source
Apparemment, j'avais besoin d'exécuter OpenSSL en tant que root pour qu'il ait l'autorisation sur le fichier d'amorçage.
la source
J'ai eu la même chose sur le serveur Windows. Ensuite, j'ai compris en changeant le
vars.bat
qui est:puis recommencez depuis le début et tout devrait bien se passer.
la source
set HOME=.
Le problème pour moi était que j'avais .rnd dans mon répertoire personnel mais il appartenait à root. Le supprimer et réémettre la commande openssl a corrigé ce problème.
la source
Vous devez définir la variable d'environnement $ RANDFILE et / ou créer le fichier $ HOME / .rnd. ( FAQ OpenSSL ). (Bien sûr, vous devriez avoir des droits sur ce fichier. Les autres réponses ici sont à ce sujet. Mais vous devez d'abord avoir le fichier et une référence.)
Jusqu'à la version 0.9.6, OpenSSL écrivait le fichier d'amorçage dans le répertoire courant dans le fichier ".rnd". Dans la version 0.9.6a, vous n'avez pas de fichier d'amorçage par défaut. OpenSSL 0.9.6b et versions ultérieures se comportera de manière similaire à 0.9.6a, mais utilisera une valeur par défaut "C: \" pour HOME sur les systèmes Windows si la variable d'environnement n'a pas été définie.
Si le fichier d'amorçage par défaut n'existe pas ou est trop court, le message d'erreur «PRNG non prédéfini» peut se produire.
La variable d'environnement $ RANDFILE et $ HOME / .rnd sont uniquement utilisés par les outils de ligne de commande OpenSSL. Les applications utilisant la bibliothèque OpenSSL fournissent leurs propres options de configuration pour spécifier la source d'entropie, veuillez consulter la documentation fournie avec l'application.
la source
Je suis tombé sur ce problème aujourd'hui sur AWS Lambda. J'ai créé une variable d'environnement RANDFILE = /tmp/.random
Cela a fait l'affaire.
la source