2

私は Python 2.7.8 で開発しています。そこにある _ssl.pyd は、OpenSSL 1.0.1h でビルドされています。

ただし、必要な依存関係を満たすために、pyOpenSSL 0.10 (古いバージョンを知っています) も持っています。pyOpenSSL には libeay32.dll と ssleay32.dll バージョン 0.9.8o が含まれています。

これはどうしたの?pyOpenSSL が OpenSSL ライブラリへの直接インターフェイスを提供するためですか?

4

1 に答える 1

2

Python は、TLS/SSL ( https://docs.python.org/3.4/library/ssl.html ) や urllib などの内部ライブラリに必要な OpenSSL サポートを使用してコンパイルできます。内部の Python ssl ライブラリは、ソケットを介して SSL プロトコルを実装します。たとえば、urllib は https プロトコルに使用します。

pyOpenSSL は、Pypi で見つけることができるもう 1 つの Python ライブラリです。内部 Python SSL モジュールはまだすべての機能をカバーしていないため、OpenSSL lib の完全なサポートを提供するために作成されました。

したがって、これは Python 内部ライブラリの一部ではありません。openssl ライブラリを介して高レベルのインターフェイスを実装します。Python スコープ外でコンパイル/インストールする必要があります。したがって、Python で使用される openssl lib とは別のバージョンを使用してコンパイルされる可能性があります。

さらに、Windows では、バイナリ パッケージを使用してインストールするため、コンパイルされた OpenSSL dll が提供されます。そのため、システムまたは Python によってインストールされたものとは異なる場合があります。

はい、pyOpenSLL は OpenSSL lib への直接インターフェイスを行います。テスト スクリプトは openssl コマンド ライン ツールも実行しますが、バージョン 0.14 のソース ファイルをざっと見てみると、lib の Python ファイルは実行しません。

それが役立つことを願っています。

于 2014-10-30T08:24:19.993 に答える