Мне поручено перевести серверную сеть из простых сокетов на SSL в python 2.5, и я столкнулся с проблемой. Похоже, что почти никакой библиотеки SSL там полностью реализуется интерфейс сокета, поэтому код, который мы в настоящее время не можем выполнить, может быть перенаправлен.
В частности, я не могу найти библиотеку, которая поддерживает метод "setblocking" (большинство из них - обертки, так что было бы ужасно просто обратиться к обернутому сокету напрямую?), и большинство из них, похоже, не рассматривают wrapped socket как файлоподобное устройство, поэтому решающий метод "select" не будет работать (опять же, могу ли я запустить select на завернутом сокете?).
(read, write, error) = select([socket], [socket], [], 0.2)
Я до сих пор пытался использовать tlslite и M2Crypto, но ни один из них не работает прозрачно как сокеты.
Любые идеи будут оценены.
Как насчет этот backport модуля Python 2.6 ssl
для Python 2.3+? Он предоставляет те же функциональные возможности описанный здесь, что означает, что он принимает нормальный socket.socket
и переносит его в контексте SSL.
pyOpenSSL, похоже, поддерживает setblocking()
.