QtのSSL/TLSバックエンドを wolfSSL で動かしてみる


wolfSSL は IoT デバイス、組み込み向け小型、軽量の SSL/TLS ライブラリーです。多くのリアルタイムOSを含む組み込み向けOSにポーティングされていると同時に、サードパーティー向けのインテグレーションにも力を入れています。今回は、Qt 5の最新版 Qt 5.15 のSSL/TLSバックエンドをwolfSSLでビルドし、簡単なサンプルを動かしてみます。

概要

QtのデフォルトSSL/TLSライブラリーはOpenSSLです。このバックエンドをwolfSSLで置き換えます。今回は、LinuxやMacOS上でのコマンド環境を想定しています。

QtのSSL/TLSバックエンドを wolfSSLとしてビルドする

1.wolfSSLソースコードのダウンロードとパッチの入手

Qt 5.15 に対応した wolfSSL はもう間もなくの公開に向けて準備中です。また、Qt 5.15 のSSL/TLSバックエンドをwolfSSLに変更するためにパッチが必要となります。これらの入手については、公開までの少しの間wolfSSL までお問い合わせください。

2.wolfSSLのビルド

入手したwolfSSLをビルドします。

--prefix オプションで wolfSSL ライブラリーを任意のフォルダーにインストールします。

$ cd wolfssl
$ ./configure --enable-qt --enable-qt-test --enable-alpn --enable-rc2 --prefix=/custom/install/path
$ make
$ make check
$ sudo make install

3.リンク用の環境変数を設定

QtのSSL/TLSバックエンドとしてwolfSSLをリンクするために、次の環境変数を設定します。
Step2の-prefix オプションで指定した、/custom/install/pathをライブラリーパスとして指定します。

$ export WOLFSSL_LIBS="-L/custom/install/path/wolfssl-install/lib -lwolfssl"

4.Qtのソースコードをダウンロード

今回は、Qt のバージョン 5.15.2 を使用します。qt5 ディレクトリへ5.15.2 ブランチをクローンします

$ git clone git://code.qt.io/qt/qt5.git --branch v5.15.2 

qt5 ディレクトリでサブモジュールを初期化します

$./init-repository --module-subset=qtbase

コンパイル時間節約のために、"--module-subset=qtbase"を指定していますが、フルモジュールでコンパイルするさいには、"--module-subset=qtbase"を除きます。

5.Qtにパッチを適用

QtのSSL/TLSバックエンドをwolfSSLに変更するために、パッチを適用します。ステップ1で入手したパッチをqt5フォルダーに配置しておきます。

$ cd /path/to/qt5/qtbase
$ git apply -v ../wolfssl_qt_src.patch

6.Qtをビルド

ビルド用のフォルダを作成し、Qtのビルドコンフィグを実行します。

$ cd ../../
$ mkdir qt_build
$ cd qt_build
$ ../qt5/configure -wolfssl-linked -I/path/to/wolf-install/include/wolfssl -I/path/to/wolf-install/include

コンフィグが終了したら、make を実行します。

$ make

QtのサンプルGUIプログラムを動かしてみる

出来上がった Qt のサンプルGUIプログラムを動かしてみます。また、Wireshark を使ってTLS通信を覗いてみます。

1.サンプルGUIプログラムの起動

$ cd /path/to/qtbase/examples/network/securesocketclient
$ ./securesocketclient

次の画面が表示されるので、"Connect To Host"をクリックします。

接続の様子は、wireshark で覗いてみます。

TLS 1.3 で接続出来ているようです。

あらためて、wolfSSL を使用しているか確認してみます。

$ ldd securesocketclient

wolfSSL を使用してるようです。

まとめ

今回は wolfSSL を Qt 5 の最新版バージョン 5.15 のSSL/TLSバックエンドとして使用する方法を紹介しました。

wolfSSLに関する詳細なドキュメント、製品情報については下記を参照してください。wolfSSLは、ソフトウェアの内容は同じですが無償のオープンソース版と有償商用版のデュアルライセンスとなっています。製品への組み込みの際は商用ライセンス契約が必要です。

wolfSSLのQtサポートまとめ:https://www.wolfssl.jp/qt_support/
ドキュメント:https://www.wolfssl.jp/docs/
英語サイト:https://www.wolfssl.com/
日本語サイト:https://www.wolfssl.jp/
Twitter: https://twitter.com/wolfSSL_Japan/