このページの内容

Secure Sockets Layer (SSL) クラス

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

QDtls

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

QDtlsClientVerifier

このクラスは、サーバー側の DTLS クッキーの生成と検証を実装します

QDtlsClientVerifier::GeneratorParameters

このクラスは、DTLS クッキー生成器のパラメータを定義します

QOcspResponse

このクラスは、オンライン証明書ステータスプロトコル(OCSP)の応答を表します

QSsl

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

QSslCertificate

X.509証明書用の便利なAPI

QSslCertificateExtension

X.509証明書の拡張情報にアクセスするためのAPI

QSslCipher

SSL 暗号化アルゴリズムを表します

QSslConfiguration

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

QSslDiffieHellmanParameters

サーバー用のディフィー・ヘルマンパラメータ用インターフェース

QSslEllipticCurve

楕円曲線暗号アルゴリズムで使用される楕円曲線を表す

QSslError

SSLエラー

QSslKey

秘密鍵および公開鍵のためのインターフェース

QSslKeyingMaterial

TLSセッションから派生したエクスポートされた鍵素材を記述する

QSslPreSharedKeyAuthenticator

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

QSslServer

TLS 上の暗号化された安全な TCP サーバーを実装します

QSslSocket

クライアントとサーバーの両方に対応したSSL暗号化ソケット

QSslSocket::AlertLevel

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

QSslSocket::AlertType

アラートメッセージが取り得るコードを列挙する

QDtls::HandshakeState

DTLSハンドシェイクの現在の状態を説明します

QSslSocket::ImplementedClass

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

QDtls::QDtlsError

QDtls および QDtlsClientVerifier が検出可能なエラーについて説明する

QOcspResponse::QOcspCertificateStatus

オンライン証明書ステータスについて説明します

QOcspResponse::QOcspRevocationReason

失効の理由を説明します

QSslSocket::SupportedFeature

TLSバックエンドがサポートする機能の例を列挙します

Android アプリケーションについては、「Android 向け OpenSSL サポートの追加」を参照してください。

ネットワーク接続アプリケーションでの暗号化の使用

ネットワーク上でデータを転送する際は、可能な限り暗号化を使用してください。平文(暗号化されていない、容易に読み取れるデータ)は、ユーザー情報やネットワークシステムに関する情報などの機密データを露出させてしまいます。

QSslSocket::connectToHostEncrypted() を使用して暗号化接続を行い、QSslSocket::sslHandshakeErrors() を使用して SSL の問題がないか確認してください。QSslSocket::ignoreSslErrors() は、アプリケーションにセキュリティリスクをもたらす可能性があるため、使用には注意が必要です。

QSslConfiguration を使用して、強力なセキュリティ設定を適用してください。サポートされるプロトコルは SSL バックエンドによって異なり、プロトコルのリスクレベルは将来変更される可能性があります。QSslConfiguration::setProtocol() を使用することで、より新しく、より安全なプロトコルを利用できます。詳細については、QSsl::SslProtocol で利用可能なプロトコルを参照してください。

ソースからQtをビルドする際のSSLサポートの有効化と無効化

ソースから Qt をビルドする場合、Qt は、ビルド対象のオペレーティングシステムでサポートされているネイティブ TLS ライブラリ用のプラグインをビルドします。Windows ではSchannel、macOS ではSecure Transport がこれにあたります。

すべてのプラットフォームにおいて、構成システムは、OpenSSLのソースまたは開発者向けパッケージによって提供されるopenssl/opensslv.h ヘッダーの存在を確認します。これが検出された場合、Qt用のOpenSSLバックエンドが有効化され、ビルドされます。

注: ソースからビルドした場合、 Qtは旧バージョンのOpenSSL 1.1.1を引き続きサポートできますが、 Qt Online Installer 実行時に OpenSSL 3 を必要とします。

デフォルトでは、OpenSSL 対応の Qt ライブラリは、実行時にインストールされている OpenSSL ライブラリを動的に読み込みます。ただし、Qt を `-openssl-linked ` オプションで設定することで、コンパイル時にそのライブラリに対してリンクを行うことも可能です。

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 バックエンドが提供する追加機能を一切必要としない場合は、qopensslbackend プラグインや OpenSSL ライブラリを含めずに、qschannelbackend プラグインのみを同梱するように選択できます。

ただし、複数のバックエンドを同梱しても問題はありません。Qtは、いずれかのバックエンドが正常に読み込まれるまで、順に(OpenSSLを最初に試行して)バックエンドの読み込みを試みます。その後、他のバックエンドは使用されなくなります。

データグラム・トランスポート層セキュリティ

データグラム・トランスポート層セキュリティ(DTLS)は、データグラムベースのアプリケーションにセキュリティを提供し、盗聴、改ざん、またはメッセージの偽造から保護するプロトコルです。 DTLS プロトコルは、ストリーム指向の Transport Layer Security (TLS) プロトコルに基づいています。QtNetwork は、RFC 6347 で定義されているように、User Datagram Protocol (UDP) での DTLS の使用を可能にします。

輸入および輸出の制限

一部の種類のソフトウェアおよび世界の一部の地域では、輸出入規制が適用されます。 展開されたアプリケーションで SSL 通信を使用したい開発者は、ユーザーが適切なライブラリをインストールしていることを確認するか、または適切な資格を持つ法律の専門家に相談し、OpenSSL プロジェクトのコードを使用するアプリケーションが、世界の関連地域において輸入および輸出について正しく認定されていることを確認する必要があります。

詳細については、「Qt フレームワークおよびツールの輸出規制」を参照してください。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.