Python言語用インターフェースを提供するwolfSSL Python を使用する
wolfSSL をPython環境で使用したいという方は、wolfSSL Pythonパッケージを利用することが出来ます。wolfSSL PythonはSSL/TLS組み込みライブラリである wolfSSL とPython言語間のインターフェースを提供します。
Python の標準TLSライブラリは OpenSSL を利用していますが、リソース環境の制限が厳しい場合にはwolfSSLが有効な場合があります。そのようなケースでは一度wolfSSL Python を試してみてください。
今回は、wolfSSL Python の使用方法について紹介します。
wolfSSL Python に関する詳細は下記URLから参照可能です。
また、wolfSSL Python のソースコードは下記からダウンロード可能です。
OSX 64 や Linux 64 ビットをお使いの場合、wolfSSL Pythonをインストールするには事前にコンパイル済みの Python Wheelから簡単にインストール可能です。下記、コマンドを実行します。
$ pip install wolfssl |
その他の環境やカスタマイズを行った wolfSSL ライブラリに対応したwolfSSL Pythonを使用するには次の手順を行います。
1.事前にgithub から取得したwolfSSL を少なくとも次の2つのオプションを指定し、ビルド・インストールを行います。
$./configure –enable-opensslextra –enable-sni $make && make check $sudo make install |
- 事前にgithub から取得した wolfssl-py のビルドを行いインストールします
$ cd wolfssl-py // wolfSSL ライブラリがデフォルトのフォルダーにインストールされている場合 $USE_LOCAL_WOLFSSL=1 pip install .//wolfSSL ライブラリがカスタムのパスへインストールされている場合 $USE_LOCAL_WOLFSSL=/tmp/install pip install . |
wolfSSL Python インストール後の確認は wolfssl-py フォルダーで下記コマンドを実行します。
$ pytest
または $ py.test tests |
インストールが正常に行われている場合、下記のようなログが出力されます。
$ pytest ====================== test session starts ================================= platform linux2 — Python 2.7.15+, pytest-3.3.2, py-1.5.2, pluggy-0.6.0 rootdir: /home/xxxx/gitrepo/wolfssl-py, inifile: collected 35 items tests/test_client.py …. [ 11%] ================= 35 passed in 0.88 seconds =================================
|
次にhttps://wolfssl.github.io/wolfssl-py/index.html#document-installation にあるソケットを利用したTLSクライアントの例を試してみます。
wolfssl_TLSclient_ex.py などとファイル名で Python プログラムを作成します。このプログラムでは、TLS 1.2 を使用しwww.python.org と通信を試みます。
import socket import wolfssl sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM, 0) context = wolfssl.SSLContext(wolfssl.PROTOCOL_TLSv1_2) secure_socket = context.wrap_socket(sock) secure_socket.connect((“www.python.org”, 443)) secure_socket.write(b”GET / HTTP/1.1\n\n”) print(secure_socket.read()) secure_socket.close() |
作成したプログラムを実行します。
$ python wolfssl_exa2.py HTTP/1.1 500 Domain Not Found Server: Varnish Retry-After: 0 content-type: text/html Cache-Control: private, no-cache connection: keep-alive X-Served-By: cache-hnd18736-HND Content-Length: 221 Accept-Ranges: bytes Date: Mon, 27 Jan 2020 00:50:34 GMT Via: 1.1 varnish Connection: keep-alive<html> <head> <title>Fastly error: unknown domain </title> </head> <body> <p>Fastly error: unknown domain: . Please check that this domain has been added to a service.</p> <p>Details: cache-hnd18736-HND</p></body></html> |
WireShark などのツールを使うと TLS 1.2 で通信を行っていることが分かります。
今回wolfSSL を Python言語より利用するためのパッケージwolfSSL Python を紹介しました。Python言語用のインターフェースは、他にも wolfCrypt 使用のみに特化した wolfCrypt Python パッケージもございます(URL: https://wolfssl.github.io/wolfcrypt-py/)。wolfSSL Python の使い方や、wolfCrypt Python に興味がある方はお気軽に support@wolfssl.com までお知らせください。