Я получаю следующую ошибку, когда пытаюсь установить ssl-соединение из тюрьмы chroot:
twisted.internet.error.ConnectionLost: Connection to the other side was lost in a non-clean fashion.
Я использую openssl 0.9.6 с pyopenssl для создания ssl-соединения, и я использую скрученную библиотеку python для python 2.4 в Linux (centos 5.5).
После некоторого устранения неполадок я обнаружил, что openssl дает сбой, потому что он пытается прочитать файл /dev/random, а он терпит неудачу, потому что внутри chroot нет /dev/random. Я подтвердил, что если я создам файл /dev/random внутри chroot, соединение установится.
- Я думал о монтировании файловой системы devfs, которая содержит файл /dev/random внутри моего chroot, но у моего приложения и его системных администраторов есть плохая привычка удалять корень chroot без предварительного размонтирования всего.
- Я думал о чтении из файла /dev/random перед выполнением chroot, но моя текущая настройка заключается в вызове chroot еще до того, как мой двоичный файл будет запущен, и изменение места, где происходит chroot, было бы слишком большим изменением в приложении. что я не уверен, когда и как это могло быть сделано.
- Я подумал о запуске программы за пределами моей chroot-тюрьмы, которая просто читает из /dev/random и записывает в именованный файловый канал с именем /jail/dev/random, который доступен из chroot-тюрьмы, но мне не нравится запустить отдельный процесс только для того, чтобы иметь доступ к источнику случайности. Также кажется слишком сложным просто инициализировать openssl.
Как правильно инициализировать openssl, если у меня нет доступа к /dev/random из моей программы?