web-dev-qa-db-fra.com

En utilisant OpenSSL, que signifie "incapable d'écrire" état aléatoire "?

Je génère un certificat SSL auto-signé pour protéger la section d'administration de mon serveur et je continue à recevoir ce message d'OpenSSL:

incapable d'écrire 'état aléatoire'

Qu'est-ce que ça veut dire?

Ceci est sur un serveur Ubuntu. J'ai mis à niveau libssl pour corriger la vulnérabilité de sécurité récente .

385
Luke Francl

En pratique, la raison la plus courante 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 OpenSSL FAQ :

Parfois, l'utilitaire de ligne de commande openssl n'abandonne pas avec le message d'erreur "PRNG non ensemencé", mais se plaint d'être "incapable d'écrire" état aléatoire ". Ce message fait référence au fichier de répartition 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 n'est défini. (Les versions jusqu'à 0.9.6 utilisaient le fichier ".rnd" dans le répertoire actuel dans ce cas, mais cela a changé avec 0.9.6a.)

Je voudrais donc vérifier les fichiers RANDFILE, HOME et les autorisations d’écriture sur ces emplacements du système de fichiers.

Si tout semble en ordre, vous pouvez essayer de courir avec strace et voir ce qui se passe exactement.

539
Ville Laurikari

Je 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 la commande Invite 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".

250
Beachhouse

Un autre problème sur la plate-forme Windows, assurez-vous d’exécuter votre invite de commande en tant qu’utilisateur administratif!

Je ne sais pas combien de fois cela m'a mordu ...

38
joel

Apparemment, j’avais besoin d’exécuter OpenSSL en tant que root pour qu’il ait l’autorisation d’utiliser le fichier.

16
Luke Francl

J'ai eu la même chose sur le serveur Windows. Puis j'ai compris en changeant le vars.bat qui est:

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

puis refait depuis le début et tout devrait bien se passer.

12
Jusuf

Le problème pour moi était que .rnd se trouvait dans mon répertoire personnel mais qu’il appartenait à root. Le supprimer et réémettre la commande openssl a corrigé ce problème.

6
Zds

Vous devez définir la variable d’environnement $ RANDFILE et/ou créer le fichier $ HOME/.rnd. ( OpenSSL FAQ ). (Bien sûr, vous devriez avoir des droits sur ce fichier. D'autres réponses répondent à cela. Mais vous devriez d'abord avoir le fichier et une référence.)

Jusqu'à la version 0.9.6, OpenSSL écrivait le fichier de départ dans le répertoire actuel du fichier ".rnd". Avec 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 comporteront de la même manière que 0.9.6a, mais utiliseront la 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 ensemencé" peut s'afficher.

La variable d'environnement $ RANDFILE et $ HOME/.rnd ne sont utilisées que 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.

2
Gangnus