Je reçois l'erreur suivante lorsque j'essaie d'établir une connexion ssl à partir de l'intérieur d'une prison chroot :
twisted.internet.error.ConnectionLost: La connexion s'est perdue de manière non propre du côté opposé.
J'utilise openssl 0.9.6 avec pyopenssl pour établir la connexion ssl et j'utilise la bibliothèque twisted python pour python 2.4 sur Linux (centos 5.5).
Après quelques dépannages, j'ai découvert qu'openssl échoue car il tente de lire le fichier /dev/random et échoue car il n'y a pas de /dev/random à l'intérieur de la chroot. J'ai confirmé que si je crée un fichier /dev/random à l'intérieur de la chroot, la connexion réussit.
- J'ai pensé à monter le système de fichiers devfs qui contient le fichier /dev/random à l'intérieur de ma chroot mais mon application et ses administrateurs ont la mauvaise habitude de supprimer la racine de la chroot sans démonter tout d'abord.
- J'ai pensé à lire à partir du fichier /dev/random avant de faire la chroot mais ma configuration actuelle consiste à appeler chroot avant même que mon exécutable ne démarre, et changer l'emplacement de la chroot serait un changement trop important dans l'application que je ne sais pas quand ou comment cela pourrait être fait.
- J'ai pensé à exécuter un programme en dehors de ma prison chroot qui lit simplement à partir de /dev/random et écrit dans un tube nommé /jail/dev/random qui est accessible de l'intérieur de la prison chroot mais je n'aime pas devoir exécuter un processus séparé juste pour avoir accès à une source de données aléatoires. De plus, cela semble trop compliqué juste pour initialiser openssl.
Quelle est la bonne manière d'initialiser openssl si je n'ai pas accès à /dev/random à partir de mon programme ?