4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Posted at

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"をクリックします。

image.png

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

image.png

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

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

$ ldd securesocketclient

image.png

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/

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?