セキュア・ソケット・レイヤー (SSL) クラス

以下のクラスは、ネイティブ TLS バックエンド、OpenSSL ツールキット、または適切な TLS プラグインを使用して、暗号化とプロトコル処理を行う Secure Sockets Layer (SSL) プロトコルを使用した安全なネットワーク通信をサポートします。

Qt バージョン 5.15 以降では、OpenSSL の公式サポートバージョンは 1.1.1 以降です。

Qt バージョン 5.15.1 以降は OpenSSL 3 とも互換性があります。

QDtls

このクラスは UDP ソケットの暗号化を提供します。

QDtlsClientVerifier

サーバサイドでの DTLS クッキーの生成と検証を行います。

QDtlsClientVerifier::GeneratorParameters

DTLS クッキー生成用のパラメータを定義します。

QOcspResponse

オンライン証明書ステータス・プロトコル応答を表します。

QSsl

Qt Network のすべての SSL クラスに共通する列挙型を宣言します。

QSslCertificate

X509 証明書の便利な API

QSslCertificateExtension

X509 証明書の拡張にアクセスするための API

QSslCipher

SSL 暗号を表します

QSslConfiguration

SSL 接続の設定と状態を保持します。

QSslDiffieHellmanParameters

サーバー用Diffie-Hellmanパラメータのインターフェース

QSslEllipticCurve

楕円曲線暗号アルゴリズムで使用する楕円曲線を表します。

QSslError

SSLエラー

QSslKey

秘密鍵と公開鍵のインターフェース

QSslPreSharedKeyAuthenticator

事前共有鍵(PSK)暗号スイート用の認証データ

QSslServer

TLS上の暗号化されたセキュアなTCPサーバーの実装

QSslSocket

クライアントとサーバーの両方でSSL暗号化ソケットを使用

QSsl::AlertLevel

アラート・メッセージのレベルを記述

QSsl::AlertType

アラート・メッセージが持ちうるコードの列挙

QDtls::HandshakeState

DTLS ハンドシェイクの現在の状態を記述する

QSsl::ImplementedClass

TLS バックエンドが実装するクラスを列挙する

QDtls::QDtlsError

QDtls および QDtlsClientVerifier が検出できるエラーについて説明する

QOcspResponse::QOcspCertificateStatus

オンライン証明書ステータス

QOcspResponse::QOcspRevocationReason

失効の理由

QSsl::SupportedFeature

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)プロトコルをベースにしている。QtNetworkRFC 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.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。