セキュア・ソケット・レイヤー (SSL) クラス
以下のクラスは、ネイティブ TLS バックエンド、OpenSSL ツールキット、または適切な TLS プラグインを使用して、暗号化とプロトコル処理を行う Secure Sockets Layer (SSL) プロトコルを使用した安全なネットワーク通信をサポートします。
Qt バージョン 5.15 以降では、OpenSSL の公式サポートバージョンは 1.1.1 以降です。
Qt バージョン 5.15.1 以降は OpenSSL 3 とも互換性があります。
このクラスは UDP ソケットの暗号化を提供します。 | |
サーバサイドでの DTLS クッキーの生成と検証を行います。 | |
DTLS クッキー生成用のパラメータを定義します。 | |
オンライン証明書ステータス・プロトコル応答を表します。 | |
Qt Network のすべての SSL クラスに共通する列挙型を宣言します。 | |
X509 証明書の便利な API | |
X509 証明書の拡張にアクセスするための API | |
SSL 暗号を表します | |
SSL 接続の設定と状態を保持します。 | |
サーバー用Diffie-Hellmanパラメータのインターフェース | |
楕円曲線暗号アルゴリズムで使用する楕円曲線を表します。 | |
SSLエラー | |
秘密鍵と公開鍵のインターフェース | |
事前共有鍵(PSK)暗号スイート用の認証データ | |
TLS上の暗号化されたセキュアなTCPサーバーの実装 | |
クライアントとサーバーの両方でSSL暗号化ソケットを使用 | |
アラート・メッセージのレベルを記述 | |
アラート・メッセージが持ちうるコードの列挙 | |
DTLS ハンドシェイクの現在の状態を記述する | |
TLS バックエンドが実装するクラスを列挙する | |
QDtls および QDtlsClientVerifier が検出できるエラーについて説明する | |
オンライン証明書ステータス | |
失効の理由 | |
TLS バックエンドがサポートする可能性のある機能の列挙 |
Androidアプリケーションについては、Android向けOpenSSLサポートの追加を参照してください。
ソースから Qt をビルドする際の SSL サポートの有効化と無効化
Qt をソースからビルドするとき、Qt はビルドするオペレーティングシステムでサポートされているネイティブ TLS ライブラリのプラグインをビルドします。Windows ではSchannel、macOS ではSecure Transport です。
すべてのプラットフォームで、コンフィギュレーション・システムはOpenSSLのソースまたは開発者パッケージが提供するopenssl/opensslv.h
ヘッダーの存在をチェックします。見つかった場合、Qt 用の OpenSSL バックエンドを有効にしてビルドします。
デフォルトでは、OpenSSL 対応の Qt ライブラリは、インストールされている OpenSSL ライブラリを実行時に動的にロードします。しかし、-openssl-linked
オプションを Qt に設定することで、コンパイル時にライブラリとリンクすることができます。
OpenSSLとリンクされたバージョンのQtをビルドするとき、QtのビルドシステムはCMakeのFindOpenSSL
コマンドを使って、いくつかの標準的な場所にあるOpenSSLを探します。CMakeの変数OPENSSL_ROOT_DIRを設定することで、特定の場所を強制的に指定することができます。
例えば
configure -openssl-linked -- -D OPENSSL_ROOT_DIR=<openssl_dir>
Qt ビルドで SSL サポートを無効にするには、-no-openssl
オプションで Qt を設定します。
アプリケーションをパッケージ化する際の注意
アプリケーションをパッケージ化するとき、windeployqtのようなツールを実行することがあります。 これは、使用するライブラリのプラグインをすべてplugins/
フォルダーにコピーします。しかし、TLSではバックエンドは1つしか必要ないので、アプリケーションをパッケージ化する前に他のプラグインを削除してもかまいません。例えば、Windowsを使用していて、OpenSSLバックエンドが提供する追加機能を必要としない場合、OpenSSLライブラリと同様にqopensslbackend
プラグインの出荷を見送り、単にqschannelbackend
プラグインを出荷することを選択することができます。
しかし、複数のバックエンドを出荷することは問題ありません。Qtはバックエンドを順番にロードしようとします(OpenSSLが最初にロードされます)。他のバックエンドは使用されません。
データグラムトランスポートレイヤーセキュリティ
Datagram Transport Layer Security (DTLS)は、データグラムベースのアプリケーションのセキュリティを可能にするプロトコルで、盗聴、改ざん、メッセージの偽造からの保護を提供します。DTLSプロトコルは、ストリーム指向のTransport Layer Security (TLS)プロトコルをベースにしている。QtNetwork 、RFC 6347で定義されているように、User Datagram Protocol (UDP)でDTLSを使用することができる。
インポートとエクスポートの制限
Qt のバイナリインストーラには、QtNetwork で使用される OpenSSL ライブラリが含まれています。 しかし、これらは Qt でビルドされたアプリケーションに自動的にデプロイされるわけではありません。ソフトウェアの種類や世界の地域によっては、インポートやエクスポートの制限があります。デプロイされたアプリケーションで SSL 通信を使用したい開発者は、ユーザが適切なライブラリをインス トールしていることを確認するか、適切な資格を持った法律の専門家に相談し、OpenSSL プロジェクトのコードを使用するアプリケーショ ンが、世界の関連地域でのインポートやエクスポートに対して正しく認証されていることを確認する必要があります。
本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。