2014-10-27 2 views
1

Я развиваюсь под Python 2.7.8. _ssl.pyd, который находится там, был построен с OpenSSL 1.0.1h.Почему pyOpenSSL имеет отдельную копию DLL OpenSSL?

Однако у меня также есть pyOpenSSL 0.10 (я знаю, более старая версия) для удовлетворения требуемой зависимости. pyOpenSSL включает libeay32.dll и ssleay32.dll версии 0.9.8o.

Что с этим связано? Это потому, что pyOpenSSL предоставляет прямой интерфейс для библиотек OpenSSL?

ответ

1

Python может быть скомпилирован с поддержкой OpenSSL, которая требуется для внутренних библиотек, таких как TLS/SSL (https://docs.python.org/3.4/library/ssl.html) или urllib. Внутренняя библиотека ssl Python реализует протокол SSL через сокеты. Например, urllib использует его для протокола https.

pyOpenSSL - это еще одна библиотека Python, которую вы можете найти на Pypi. Он был создан для обеспечения полной поддержки OpenSSL lib, поскольку внутренний модуль SSL Python по-прежнему не охватывает все функциональные возможности.

Таким образом, он не является частью внутренних библиотек Python. Он реализует интерфейс высокого уровня через библиотеку openssl. Вы должны скомпилировать/установить его за пределами области Python. Поэтому он может быть скомпилирован с использованием другой версии, чем opensl lib, используемой Python.

Подробнее, в Windows вы будете устанавливать его с помощью двоичного пакета, поэтому предоставляется DLL OpenSSL, с которой она была скомпилирована; поэтому они могут отличаться от установленных в системе или Python.

Да pyOpenSLL напрямую связан с OpenSSL lib. Сценарии тестов также выполняют инструмент командной строки openssl, но не файлы Python библиотеки lib, когда вы быстро смотрите исходные файлы версии 0.14.

Надеюсь, это поможет.

+0

Хорошо, если у меня есть веб-сервер в моем приложении Python с чем-то вроде CherryPy, и он использует HTTPS, какую библиотеку OpenSSL он использует? Тот, с которым связан Python, или тот, который использует pyOpenSSL? – Dave

+0

Он использует ту, которая используется библиотекой Python TLS, которую она использует. Согласно http://cherrypy.readthedocs.org/en/latest/deploy.html#ssl-support, CherryPy может использовать * либо * встроенную библиотеку TLS, либо использовать pyOpenSSL - в зависимости от вашей конфигурации. –