QSslConfiguration Class
QSslConfiguration クラスは、SSL 接続の設定と状態を保持します。詳細...
| ヘッダー: | #include <QSslConfiguration> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Network) target_link_libraries(mytarget PRIVATE Qt6::Network) |
| qmake: | QT += network |
- 継承されたメンバーを含む、すべてのメンバーの一覧
- QSslConfigurationは、ネットワークプログラミングAPIおよび暗黙的に共有されるクラスの一部です。
注:このクラスのすべての関数は再入可能です。
パブリック型
| enum | NextProtocolNegotiationStatus { NextProtocolNegotiationNone, NextProtocolNegotiationNegotiated, NextProtocolNegotiationUnsupported } |
パブリック関数
| QSslConfiguration() | |
| QSslConfiguration(const QSslConfiguration &other) | |
| ~QSslConfiguration() | |
| void | addCaCertificate(const QSslCertificate &certificate) |
| void | addCaCertificates(const QList<QSslCertificate> &certificates) |
| bool | addCaCertificates(const QString &path, QSsl::EncodingFormat format = QSsl::Pem, QSslCertificate::PatternSyntax syntax = QSslCertificate::PatternSyntax::FixedString) |
| QList<QByteArray> | allowedNextProtocols() const |
| QMap<QByteArray, QVariant> | backendConfiguration() const |
| QList<QSslCertificate> | caCertificates() const |
| QList<QSslCipher> | ciphers() const |
| QSslDiffieHellmanParameters | diffieHellmanParameters() const |
| bool | dtlsCookieVerificationEnabled() const |
| QList<QSslEllipticCurve> | ellipticCurves() const |
| QSslKey | ephemeralServerKey() const |
(since 6.0) bool | handshakeMustInterruptOnError() const |
| bool | isNull() const |
| QSslCertificate | localCertificate() const |
| QList<QSslCertificate> | localCertificateChain() const |
(since 6.0) bool | missingCertificateIsFatal() const |
| QByteArray | nextNegotiatedProtocol() const |
| QSslConfiguration::NextProtocolNegotiationStatus | nextProtocolNegotiationStatus() const |
| bool | ocspStaplingEnabled() const |
| QSslCertificate | peerCertificate() const |
| QList<QSslCertificate> | peerCertificateChain() const |
| int | peerVerifyDepth() const |
| QSslSocket::PeerVerifyMode | peerVerifyMode() const |
| QByteArray | preSharedKeyIdentityHint() const |
| QSslKey | privateKey() const |
| QSsl::SslProtocol | protocol() const |
| QSslCipher | sessionCipher() const |
| QSsl::SslProtocol | sessionProtocol() const |
| QByteArray | sessionTicket() const |
| int | sessionTicketLifeTimeHint() const |
| void | setAllowedNextProtocols(const QList<QByteArray> &protocols) |
| void | setBackendConfiguration(const QMap<QByteArray, QVariant> &backendConfiguration = QMap<QByteArray, QVariant>()) |
| void | setBackendConfigurationOption(const QByteArray &name, const QVariant &value) |
| void | setCaCertificates(const QList<QSslCertificate> &certificates) |
| void | setCiphers(const QList<QSslCipher> &ciphers) |
(since 6.0) void | setCiphers(const QString &ciphers) |
| void | setDiffieHellmanParameters(const QSslDiffieHellmanParameters &dhparams) |
| void | setDtlsCookieVerificationEnabled(bool enable) |
| void | setEllipticCurves(const QList<QSslEllipticCurve> &curves) |
(since 6.0) void | setHandshakeMustInterruptOnError(bool interrupt) |
(since 6.12) void | setKeyingMaterial(const QList<QSslKeyingMaterial> &keyMaterial) |
| void | setLocalCertificate(const QSslCertificate &certificate) |
| void | setLocalCertificateChain(const QList<QSslCertificate> &localChain) |
(since 6.0) void | setMissingCertificateIsFatal(bool cannotRecover) |
| void | setOcspStaplingEnabled(bool enabled) |
| void | setPeerVerifyDepth(int depth) |
| void | setPeerVerifyMode(QSslSocket::PeerVerifyMode mode) |
| void | setPreSharedKeyIdentityHint(const QByteArray &hint) |
| void | setPrivateKey(const QSslKey &key) |
| void | setProtocol(QSsl::SslProtocol protocol) |
| void | setSessionTicket(const QByteArray &sessionTicket) |
| void | setSslOption(QSsl::SslOption option, bool on) |
| void | swap(QSslConfiguration &other) |
(since 6.12) QList<QSslKeyingMaterial> | takeKeyingMaterial() |
(since 6.12) std::optional<QSslKeyingMaterial> | takeKeyingMaterial(const QSslKeyingMaterial &material) |
| bool | testSslOption(QSsl::SslOption option) const |
| bool | operator!=(const QSslConfiguration &other) const |
| QSslConfiguration & | operator=(const QSslConfiguration &other) |
| bool | operator==(const QSslConfiguration &other) const |
静的パブリックメンバー
| const char[] | ALPNProtocolHTTP2 |
| const char[] | NextProtocolHttp1_1 |
| QSslConfiguration | defaultConfiguration() |
| QSslConfiguration | defaultDtlsConfiguration() |
| void | setDefaultConfiguration(const QSslConfiguration &configuration) |
| void | setDefaultDtlsConfiguration(const QSslConfiguration &configuration) |
| QList<QSslCipher> | supportedCiphers() |
| QList<QSslEllipticCurve> | supportedEllipticCurves() |
| QList<QSslCertificate> | systemCaCertificates() |
詳細な説明
QSslConfiguration は、Qt Network クラスによって、開いている SSL 接続に関する情報を中継し、アプリケーションがその接続の特定の機能を制御できるようにするために使用されます。
QSslConfiguration が現在サポートしている設定は以下の通りです:
- 使用する SSL/TLS プロトコル
- 接続時に相手側に提示する証明書およびそれに関連付けられた秘密鍵
- 接続の暗号化に使用が許可されている暗号スイート
- 相手側の証明書の検証に使用される認証局(CA)証明書のリスト
これらの設定は、接続ハンドシェイク中にのみ適用されます。接続確立後に設定を行っても効果はありません。
QSslConfigurationがサポートする状態は以下の通りです:
- ハンドシェイク中に相手側が提示した証明書、およびCA証明書に至る証明書チェーン
- このセッションの暗号化に使用される暗号スイート
状態は、SSL接続が開始されてからでなければ取得できませんが、必ずしも接続が終了する前に取得できるとは限りません。一部の設定は、SSL接続の途中で再起動することなく変更される場合があります(例えば、暗号スイートは時間の経過とともに変更されることがあります)。
QSslConfiguration オブジェクトの状態は変更できません。
QSslConfigurationは、QSslSocket およびNetwork Access APIと併用できます。
なお、QSslConfiguration の設定を変更するだけでは、関連する SSL 接続の設定は変更されません。設定を変更するには、変更した QSslConfiguration オブジェクトに対して setSslConfiguration を呼び出す必要があります。以下の例は、QSslSocket オブジェクトでプロトコルを TLSv1_2 に変更する方法を示しています:
QSslConfiguration config = sslSocket.sslConfiguration();
config.setProtocol(QSsl::TlsV1_2);
sslSocket.setSslConfiguration(config);関連項目: QSsl::SslProtocol 、QSslCertificate 、QSslCipher 、QSslKey 、QSslSocket 、QNetworkAccessManager 、QSslSocket::sslConfiguration()、およびQSslSocket::setSslConfiguration()。
メンバ型のドキュメント
enum QSslConfiguration::NextProtocolNegotiationStatus
Next Protocol Negotiation(NPN)またはApplication-Layer Protocol Negotiation(ALPN)の状態を表します。
| 定数 | 値 | 説明 |
|---|---|---|
QSslConfiguration::NextProtocolNegotiationNone | 0 | アプリケーションプロトコルは(まだ)ネゴシエーションされていません。 |
QSslConfiguration::NextProtocolNegotiationNegotiated | 1 | 次のプロトコルがネゴシエーション済みです(nextNegotiatedProtocol() を参照)。 |
QSslConfiguration::NextProtocolNegotiationUnsupported | 2 | クライアントとサーバーが、共通の次のアプリケーションプロトコルについて合意に至りませんでした。 |
メンバ関数のドキュメント
QSslConfiguration::QSslConfiguration()
空のSSL設定を構築します。この設定には有効な設定は含まれておらず、状態は空になります。このコンストラクタが呼び出された後、isNull() は true を返します。
いずれかのセッターメソッドが呼び出されると、isNull() は false を返します。
QSslConfiguration::QSslConfiguration(const QSslConfiguration &other)
other の設定と状態をコピーします。other がnullの場合、このオブジェクトもnullになります。
[noexcept] QSslConfiguration::~QSslConfiguration()
QSslConfiguration が保持しているリソースをすべて解放します。
void QSslConfiguration::addCaCertificate(const QSslCertificate &certificate)
この設定のCA証明書データベースにcertificate を追加します。証明書データベースは、SSLハンドシェイクの前に設定しておく必要があります。CA証明書データベースは、ハンドシェイクフェーズにおいて、ソケットが相手側の証明書を検証するために使用されます。
注:デフォルトの設定では 、システムの CA 証明書データベースが使用されます。それが利用できない場合(iOS ではよくあるケースです)、デフォルトのデータベースは空になります。
関連項目: caCertificates()、setCaCertificates()、およびaddCaCertificates()も参照してください 。
void QSslConfiguration::addCaCertificates(const QList<QSslCertificate> &certificates)
この設定のCA証明書データベースにcertificates を追加します。証明書データベースは、SSLハンドシェイクの前に設定しておく必要があります。CA証明書データベースは、ハンドシェイクフェーズにおいて、ソケットが相手側の証明書を検証するために使用されます。
注:デフォルトの設定では 、システムの CA 証明書データベースが使用されます。それが利用できない場合(iOS ではよくあるケースです)、デフォルトのデータベースは空になります。
関連項目: caCertificates()、setCaCertificates()、addCaCertificate()も参照してください 。
bool QSslConfiguration::addCaCertificates(const QString &path, QSsl::EncodingFormat format = QSsl::Pem, QSslCertificate::PatternSyntax syntax = QSslCertificate::PatternSyntax::FixedString)
path 内のすべてのファイルから、指定されたformat でエンコードされた証明書を検索し、それらをこのソケットのCA証明書データベースに追加します。path は、syntax で指定されているように、ファイル、または1つ以上のファイルに一致するパターンでなければなりません。ソケットのCA証明書データベースに1つ以上の証明書が追加された場合はtrue を返し、そうでない場合はfalse を返します。
CA証明書データベースは、ハンドシェイクフェーズ中にソケットが相手側の証明書を検証するために使用されます。
より精密な制御を行うには、addCaCertificate() を使用してください。
addCaCertificate() およびQSslCertificate::fromPath()も参照してください 。
QList<QByteArray> QSslConfiguration::allowedNextProtocols() const
この関数は、setAllowedNextProtocols() で設定された、Next Protocol Negotiation (NPN) または Application-Layer Protocol Negotiation (ALPN) TLS 拡張機能を通じてサーバーとネゴシエート可能なプロトコルを返します。
nextNegotiatedProtocol()、nextProtocolNegotiationStatus()、setAllowedNextProtocols()、およびQSslConfiguration::NextProtocolHttp1_1も参照してください 。
QMap<QByteArray, QVariant> QSslConfiguration::backendConfiguration() const
バックエンド固有の設定を返します。
setBackendConfigurationOption() またはsetBackendConfiguration() によって設定されたオプションのみが返されます。バックエンドの内部標準設定は報告されません。
setBackendConfigurationOption() およびsetBackendConfiguration()も参照してください 。
QList<QSslCertificate> QSslConfiguration::caCertificates() const
この接続のCA証明書データベースを返します。CA証明書データベースは、ハンドシェイクフェーズ中にソケットが相手側の証明書を検証するために使用されます。これは、setCaCertificates() またはaddCaCertificate() およびaddCaCertificates() を使用して、ハンドシェイクの前に変更することができます。
setCaCertificates()、addCaCertificate()、およびaddCaCertificates()も参照してください 。
QList<QSslCipher> QSslConfiguration::ciphers() const
この接続の現在の暗号スイートを返します。このリストは、ハンドシェイクフェーズにおいてセッション暗号を選択する際に使用されます。返される暗号スイートのリストは、優先度の高い順に並べられています(つまり、リストの先頭にある暗号スイートが最も優先度の高いものです)。 セッション暗号は、リストの先頭にあるもので、かつ相手側でもサポートされているものが採用されます。
デフォルトでは、ハンドシェイクフェーズでは、このシステムのSSLライブラリがサポートする任意の暗号スイートを選択できますが、これはシステムごとに異なる場合があります。このシステムのSSLライブラリがサポートする暗号スイートのリストは、supportedCiphers()によって返されます。setCiphers() を呼び出し、サポートされている暗号の一部分のみを指定することで、このソケットのセッション暗号の選択に使用される暗号のリストを制限することができます。supportedCiphers() で返されたリストを引数としてsetCiphers() を呼び出すことで、すべての暗号セットの使用に戻すことができます。
setCiphers() およびsupportedCiphers()も参照してください 。
[static] QSslConfiguration QSslConfiguration::defaultConfiguration()
新しいSSL接続で使用されるデフォルトのSSL設定を返します。
デフォルトの SSL 設定は、以下の要素で構成されます:
- ローカル証明書なし、秘密鍵なし
- プロトコルSecureProtocols
- システムのデフォルトのCA証明書リスト
- SSLライブラリがサポートする128ビット以上のSSL暗号スイチのリストと同一の暗号スイチリスト
supportedCiphers() およびsetDefaultConfiguration()も参照してください 。
[static] QSslConfiguration QSslConfiguration::defaultDtlsConfiguration()
新しい DTLS 接続で使用されるデフォルトの DTLS 設定を返します。
デフォルトのDTLS設定は、以下の要素で構成されます:
- ローカル証明書なし、秘密鍵なし
- プロトコル DtlsV1_2OrLater
- システムのデフォルトのCA証明書リスト
- SSL ライブラリがサポートする TLS 1.2 暗号スイートのリストのうち、暗号に 128 ビット以上の秘密鍵を使用するもの。
setDefaultDtlsConfiguration()も参照してください 。
QSslDiffieHellmanParameters QSslConfiguration::diffieHellmanParameters() const
現在のディフィー・ヘルマンパラメータのセットを取得します。
ディフィー・ヘルマンパラメータが設定されていない場合、QSslConfiguration オブジェクトはデフォルトでRFC 3526に規定された2048ビットのMODPグループを使用します。
注: デフォルトのパラメータは 、将来の Qt バージョンで変更される可能性があります。そのバージョンで使用されているデフォルト値を確認するには、使用中のQt バージョンのドキュメントを参照してください。
setDiffieHellmanParameters()も参照してください 。
bool QSslConfiguration::dtlsCookieVerificationEnabled() const
この関数は、サーバー側のソケットで DTLS クッキーの検証が有効になっている場合に true を返します。
setDtlsCookieVerificationEnabled()も参照してください 。
QList<QSslEllipticCurve> QSslConfiguration::ellipticCurves() const
この接続の現在の楕円曲線リストを返します。このリストは、ハンドシェイクフェーズにおいて楕円曲線を選択する際に使用されます(楕円曲線暗号を使用する場合)。返される曲線リストは、優先度の高い順(つまり、リストの先頭が最も優先度の高い曲線)に並べられています。
デフォルトでは、ハンドシェイクフェーズでは、このシステムのSSLライブラリがサポートする任意の楕円曲線を選択できますが、これはシステムごとに異なる場合があります。このシステムのSSLライブラリがサポートする楕円曲線のリストは、QSslSocket::supportedEllipticCurves()によって返されます。
setEllipticCurves() を呼び出し、サポートされている暗号のサブセットを指定することで、このソケットのセッション暗号の選択に使用される曲線のリストを制限できます。setEllipticCurves() を呼び出し、QSslSocket::supportedEllipticCurves() で返されたリストを指定することで、すべての曲線セットの使用に戻すことができます。
setEllipticCurvesも参照してください 。
QSslKey QSslConfiguration::ephemeralServerKey() const
フォワードシークレシーを備えた暗号アルゴリズム(例:DHE-RSA-AES128-SHA)で使用される一時的なサーバーキーを返します。
この一時的な鍵は、クライアントモード(QSslSocket::SslClientMode )で実行している場合にのみ利用可能です。サーバーモードで実行している場合、またはフォワードシークレシーを持たない暗号アルゴリズムを使用している場合は、nullの鍵が返されます。一時的なサーバー鍵は、encrypted()シグナルが発信される前に設定されます。
[since 6.0] bool QSslConfiguration::handshakeMustInterruptOnError() const
検証コールバックが、ハンドシェイクを完了する前にQSslSocket::handshakeInterruptedOnError()を早期に発行する場合、trueを返します。
注:この関数は 、OpenSSL 以外のすべてのバックエンドでは常に false を返します。
この関数は Qt 6.0 で導入されました。
関連項目: setHandshakeMustInterruptOnError()、QSslSocket::handshakeInterruptedOnError()、およびQSslSocket::continueInterruptedHandshake()。
bool QSslConfiguration::isNull() const
これが null の `QSslConfiguration ` オブジェクトである場合、true を返します。
QSslConfiguration オブジェクトは、デフォルトコンストラクタで生成され、かつセッターメソッドが一切呼び出されていない場合、null となります。
setProtocol()、setLocalCertificate()、setPrivateKey()、setCiphers()、およびsetCaCertificates()も参照してください 。
QSslCertificate QSslConfiguration::localCertificate() const
SSLハンドシェイク処理中に相手側に提示する証明書を返します。
setLocalCertificate()も参照してください 。
QList<QSslCertificate> QSslConfiguration::localCertificateChain() const
SSLハンドシェイク処理中に相手側に提示する証明書チェーンを返します。
setLocalCertificateChain() およびlocalCertificate()も参照してください 。
[since 6.0] bool QSslConfiguration::missingCertificateIsFatal() const
コードQSslError::NoPeerCertificate のエラーを無視できない場合、trueを返します。
注: OpenSSL 以外のすべての TLS バックエンドに対しては、常に false を返します。
この関数は Qt 6.0 で導入されました。
QSslSocket::ignoreSslErrors() およびsetMissingCertificateIsFatal()も参照してください 。
QByteArray QSslConfiguration::nextNegotiatedProtocol() const
この関数は、Next Protocol Negotiation (NPN) または Application-Layer Protocol Negotiation (ALPN) TLS 拡張機能が有効になっている場合、サーバーとネゴシエートされたプロトコルを返します。NPN/ALPN 拡張機能を有効にするには、サーバーへの接続前に `setAllowedNextProtocols()` を明示的に呼び出す必要があります。
プロトコルのネゴシエーションが行えなかった場合、または拡張機能が有効になっていない場合、この関数は null のQByteArray を返します。
setAllowedNextProtocols() およびnextProtocolNegotiationStatus()も参照してください 。
QSslConfiguration::NextProtocolNegotiationStatus QSslConfiguration::nextProtocolNegotiationStatus() const
この関数は、Next Protocol Negotiation(NPN)またはApplication-Layer Protocol Negotiation(ALPN)のステータスを返します。setAllowedNextProtocols() によってこの機能が有効化されていない場合、この関数はNextProtocolNegotiationNone を返します。ステータスは、encrypted() シグナルが発信される前に設定されます。
setAllowedNextProtocols()、allowedNextProtocols()、nextNegotiatedProtocol()、およびQSslConfiguration::NextProtocolNegotiationStatusも参照してください 。
bool QSslConfiguration::ocspStaplingEnabled() const
setOCSPStaplingEnabled() によって OCSP ステープリングが有効にされていた場合は true を返し、そうでない場合は false を返します(これがデフォルト値です)。
setOcspStaplingEnabled()も参照してください 。
QSslCertificate QSslConfiguration::peerCertificate() const
相手側のデジタル証明書(つまり、接続先のホストの直近の証明書)を返します。相手側が証明書を割り当てていない場合は、null 証明書を返します。
ピア証明書はハンドシェイクフェーズ中に自動的に検証されるため、この関数は通常、表示や接続診断の目的で証明書を取得するために使用されます。この証明書には、ホスト名、証明書の発行者、ピアの公開鍵など、ピアに関する情報が含まれています。
ピア証明書はハンドシェイクフェーズ中に設定されるため、QSslSocket::sslErrors() 信号、QNetworkReply::sslErrors() 信号、またはQSslSocket::encrypted() 信号に接続されたスロットからピア証明書にアクセスしても安全です。
null 証明書が返された場合、SSL ハンドシェイクが失敗したか、接続先のホストに証明書がないか、あるいは接続がないことを意味する可能性があります。
相手側の証明書の完全なチェーンを確認したい場合は、peerCertificateChain() を使用して、それらを一度にすべて取得してください。
関連項目: peerCertificateChain()、QSslSocket::sslErrors()、QSslSocket::ignoreSslErrors()、QNetworkReply::sslErrors()、およびQNetworkReply::ignoreSslErrors()。
QList<QSslCertificate> QSslConfiguration::peerCertificateChain() const
相手側の直近の証明書から始まり、CAの証明書で終わる、相手側のデジタル証明書の連鎖を返します。
ピア証明書は、ハンドシェイクフェーズ中に自動的に検証されます。この関数は通常、表示用の証明書を取得したり、接続診断を実行したりするために使用されます。証明書には、ホスト名、発行者名、発行者の公開鍵など、ピアおよび証明書発行者に関する情報が含まれています。
ピア証明書はハンドシェイクフェーズ中に設定されるため、QSslSocket::sslErrors() 信号、QNetworkReply::sslErrors() 信号、またはQSslSocket::encrypted() 信号に接続されたスロットからピア証明書にアクセスしても安全です。
空のリストが返された場合、SSL ハンドシェイクが失敗したか、接続先のホストに証明書がないか、あるいは接続がないことを意味する可能性があります。
相手側の直近の証明書のみを取得したい場合は、peerCertificate() を使用してください。
関連項目: peerCertificate()、QSslSocket::sslErrors()、QSslSocket::ignoreSslErrors()、QNetworkReply::sslErrors()、およびQNetworkReply::ignoreSslErrors()。
int QSslConfiguration::peerVerifyDepth() const
SSLハンドシェイクフェーズ中に検証される、相手側の証明書チェーン内の証明書の最大数を返します。最大深度が設定されていない場合は 0(デフォルト)が返され、これは証明書チェーン全体を検証することを意味します。
証明書は発行順に検証され、まず相手側の自身の証明書から始まり、次にその発行者の証明書、という順になります。
setPeerVerifyDepth() およびpeerVerifyMode()も参照してください 。
QSslSocket::PeerVerifyMode QSslConfiguration::peerVerifyMode() const
検証モードを返します。このモードによって、QSslSocket が相手側(つまり、クライアントがサーバーに証明書を要求するか、サーバーがクライアントに証明書を要求するか)から証明書を要求するかどうか、およびその証明書が有効であることを必須とするかどうかが決まります。
デフォルトのモードは `AutoVerifyPeer` であり、これにより `QSslSocket ` は、クライアントに対しては `VerifyPeer` を、サーバーに対しては `QueryPeer` を使用するよう指示されます。
setPeerVerifyMode()も参照してください 。
QByteArray QSslConfiguration::preSharedKeyIdentityHint() const
アイデンティティ・ヒントを返します。
setPreSharedKeyIdentityHint()も参照してください 。
QSslKey QSslConfiguration::privateKey() const
この接続に割り当てられたSSL key を返します。まだ割り当てられていない場合は、nullキーを返します。
setPrivateKey() およびlocalCertificate()も参照してください 。
QSsl::SslProtocol QSslConfiguration::protocol() const
この SSL 設定のプロトコル設定を返します。
setProtocol()も参照してください 。
QSslCipher QSslConfiguration::sessionCipher() const
ソケットの暗号化cipher を返します。接続が暗号化されていない場合は、null cipherを返します。セッション用のソケットのcipherは、ハンドシェイクフェーズ中に設定されます。このcipherは、ソケットを介して送信されるデータの暗号化および復号化に使用されます。
SSL インフラストラクチャは、ハンドシェイクフェーズで最終的にセッション暗号として選択される暗号の順序付きリストを設定するための関数も提供しています。この順序付きリストは、ハンドシェイクフェーズが開始される前に設定されていなければなりません。
関連項目: ciphers(), setCiphers(), supportedCiphers() も参照してください 。
QSsl::SslProtocol QSslConfiguration::sessionProtocol() const
ソケットの SSL/TLS プロトコルを返します。接続が暗号化されていない場合は、UnknownProtocol を返します。セッションにおけるソケットのプロトコルは、ハンドシェイクフェーズ中に設定されます。
protocol() およびsetProtocol()も参照してください 。
QByteArray QSslConfiguration::sessionTicket() const
QSsl::SslOptionDisableSessionPersistence が無効に設定されている場合、この関数はSSLハンドシェイクで使用されたセッションチケットをASN.1形式で返します。これは、例えばディスクへの保存に適しています。セッションチケットが使用されなかった場合、またはQSsl::SslOptionDisableSessionPersistence が無効に設定されていない場合、この関数は空のQByteArray を返します。
注: セッションチケットをディスクなどに永続化する際は 、セッション情報が潜在的な攻撃者に漏洩しないよう注意してください。セッション情報が知られてしまうと、そのセッションパラメータで暗号化されたデータの盗聴が可能になります。
関連項目: setSessionTicket()、QSsl::SslOptionDisableSessionPersistence 、setSslOption()、およびQSslSocket::newSessionTicketReceived()。
int QSslConfiguration::sessionTicketLifeTimeHint() const
QSsl::SslOptionDisableSessionPersistence が無効に設定されている場合、この関数はサーバーから送信されたセッションチケットの有効期間のヒント(0の場合もある)を返します。サーバーがセッションチケットを送信しなかった場合(例えば、セッションを再開する場合や、サーバーがセッションチケットをサポートしていない場合など)、あるいはQSsl::SslOptionDisableSessionPersistence が無効に設定されていない場合、この関数は-1を返します。
関連項目: sessionTicket()、QSsl::SslOptionDisableSessionPersistence 、setSslOption()、およびQSslSocket::newSessionTicketReceived()。
void QSslConfiguration::setAllowedNextProtocols(const QList<QByteArray> &protocols)
この関数は、Next Protocol Negotiation(NPN)またはApplication-Layer Protocol Negotiation(ALPN)TLS拡張機能を通じてサーバーとネゴシエーションを行う、許可されるprotocols を設定します。protocols 内の各要素は、1つの許可されるプロトコルを定義する必要があります。 この関数は、SSLハンドシェイクにおいてNPN/ALPN拡張を送信するために、接続前に明示的に呼び出す必要があります。ネゴシエーションが成功したかどうかは、nextProtocolNegotiationStatus() を通じて照会できます。
nextNegotiatedProtocol()、nextProtocolNegotiationStatus()、allowedNextProtocols()、およびQSslConfiguration::NextProtocolHttp1_1も参照してください 。
void QSslConfiguration::setBackendConfiguration(const QMap<QByteArray, QVariant> &backendConfiguration = QMap<QByteArray, QVariant>())
バックエンド固有の設定を設定または解除します。
backendConfiguration パラメータを指定しない場合、この関数はバックエンド固有の設定をクリアします。サポートされているオプションの詳細については、setBackendConfigurationOption()のドキュメントを参照してください。
backendConfiguration() およびsetBackendConfigurationOption()も参照してください 。
void QSslConfiguration::setBackendConfigurationOption(const QByteArray &name, const QVariant &value)
バックエンド固有の設定ファイル内のオプション「name 」を「value 」に設定します。
OpenSSL (>= 1.0.2) バックエンドでサポートされているオプションについては、サポートされている設定ファイルコマンドのドキュメントを参照してください。value パラメータの期待される型は、すべてのオプションにおいてQByteArray です。例では、いくつかのオプションの使用方法を示しています。
注: バックエンド固有の設定は 、一般的な設定の後に適用されます。バックエンド固有の設定を使用して一般的な設定オプションを再度設定すると、その一般的な設定オプションは上書きされます。
backendConfiguration() およびsetBackendConfiguration()も参照してください 。
void QSslConfiguration::setCaCertificates(const QList<QSslCertificate> &certificates)
このソケットのCA証明書データベースをcertificates に設定します。証明書データベースは、SSLハンドシェイクの前に設定しておく必要があります。CA証明書データベースは、ハンドシェイクフェーズ中にソケットが相手側の証明書を検証するために使用されます。
注:デフォルトの設定では 、システムのCA証明書データベースが使用されます。それが利用できない場合(iOSではよくあるケースです)、デフォルトのデータベースは空になります。
関連項目: caCertificates()、addCaCertificates()、およびaddCaCertificate()も参照してください 。
void QSslConfiguration::setCiphers(const QList<QSslCipher> &ciphers)
このソケットの暗号スイートをciphers に設定します。この暗号スイートには、supportedCiphers()が返すリストに含まれる暗号のサブセットが含まれている必要があります。
暗号スイートの制限は、セッション暗号が選択されるハンドシェイクフェーズの前に実行する必要があります。
ciphers() およびsupportedCiphers()も参照してください 。
[since 6.0] void QSslConfiguration::setCiphers(const QString &ciphers)
この設定の暗号スイートを「ciphers 」に設定します。これは、コロンで区切られた暗号スイート名のリストです。暗号スイートは優先順位の高い順に列挙されており、最も優先度の高いものから始まります。ciphers 内の各暗号スイート名は、supportedCiphers()が返すリストに含まれる暗号スイート名でなければなりません。暗号スイートの制限は、セッション暗号が選択されるハンドシェイクフェーズの前に実行する必要があります。
注: Schannel バックエンドを使用する場合 、暗号の順序は無視され、Schannel がハンドシェイク中に最も安全な暗号を選択します。
この関数は Qt 6.0 で導入されました。
関連項目: ciphers()。
[static] void QSslConfiguration::setDefaultConfiguration(const QSslConfiguration &configuration)
新しいSSL接続で使用されるデフォルトのSSL設定をconfiguration に設定します。既存の接続はこの呼び出しの影響を受けません。
supportedCiphers() およびdefaultConfiguration()も参照してください 。
[static] void QSslConfiguration::setDefaultDtlsConfiguration(const QSslConfiguration &configuration)
新しい DTLS 接続で使用されるデフォルトの DTLS 設定をconfiguration に設定します。既存の接続はこの呼び出しの影響を受けません。
defaultDtlsConfiguration()も参照してください 。
void QSslConfiguration::setDiffieHellmanParameters(const QSslDiffieHellmanParameters &dhparams)
このソケットがdhparams としてサーバーとして機能する際に使用する、カスタムのディフィー・ヘルマンパラメータセットを設定します。
ディフィー・ヘルマンパラメータが設定されていない場合、QSslConfiguration オブジェクトはデフォルトでRFC 3526に規定された2048ビットのMODPグループを使用します。
バージョン 6.7 以降では、TLS バックエンドがサポートしている場合、空のディフィー・ヘルマンパラメータを指定して自動選択を行うことができます(openssl の SSL_CTX_set_dh_auto を参照)。
注: デフォルトのパラメータは 、将来の Qt バージョンで変更される可能性があります。そのバージョンで使用されているデフォルト値を確認するには、使用しているQt バージョンのドキュメントを参照してください。
diffieHellmanParameters()も参照してください 。
void QSslConfiguration::setDtlsCookieVerificationEnabled(bool enable)
enable がtrueの場合、この関数はDTLSクッキーの検証を有効にします。
dtlsCookieVerificationEnabled()も参照してください 。
void QSslConfiguration::setEllipticCurves(const QList<QSslEllipticCurve> &curves)
このソケットで使用される楕円曲線のリストを `curves` に設定します。このリストには、supportedEllipticCurves() が返すリストに含まれる曲線のサブセットが含まれている必要があります。
楕円曲線の制限は、セッション暗号が選択されるハンドシェイクフェーズの前に実施する必要があります。
ellipticCurvesも参照してください 。
[since 6.0] void QSslConfiguration::setHandshakeMustInterruptOnError(bool interrupt)
interrupt が true であり、基盤となるバックエンドがこのオプションをサポートしている場合、証明書の検証中に発見されたエラーは、QSslSocket::handshakeInterruptedOnError() を発行することで即座に報告されます。これにより、未完了のハンドシェイクを中止し、相手側に適切な警告メッセージを送信することが可能になります。 この場合、アプリケーション側で特別な処理を行う必要はありません。QSslSocket は、警告メッセージを送信した後、接続を閉じます。アプリケーションがエラーを確認した上でハンドシェイクを続行したい場合は、スロット関数からQSslSocket::continueInterruptedHandshake()を呼び出す必要があります。シグナルとスロットの接続は直接的なものでなければなりません。
注: ハンドシェイクの中断が有効になっている場合 、通常はQSslSocket::peerVerifyError()によって報告されるエラーは、代わりにQSslSocket::handshakeInterruptedOnError()によってのみ報告されます。
注: ハンドシェイクが継続された場合でも 、QSslSocket::sslErrors() シグナルを発火する際にはこれらのエラーが報告されます(したがって、対応する関数スロット内でこれらを無視する必要があります)。
この関数は Qt 6.0 で導入されました。
handshakeMustInterruptOnError()、QSslSocket::handshakeInterruptedOnError()、およびQSslSocket::continueInterruptedHandshake()も参照してください 。
[since 6.12] void QSslConfiguration::setKeyingMaterial(const QList<QSslKeyingMaterial> &keyMaterial)
このSSL接続の鍵素材の設定をkeyMaterial に設定します。
これにより、TLSエクスポーター機構が有効になり、アプリケーションはネゴシエーションされたTLSセッションから追加の暗号素材を導出できるようになります。エクスポーターはRFC 5705およびRFC 8446で定義されています。
この設定は、TLSハンドシェイクが開始される前に設定する必要があります。すでに暗号化されている接続に対してこの関数を呼び出しても、何の効果もありません。
各 `QSslKeyingMaterial ` エントリは、エクスポーターラベル、オプションのコンテキスト値、および導出される鍵素材の長さを指定します。ハンドシェイクが成功した後、要求された鍵素材を SSL 接続から取得できます。
エクスポートされた鍵生成素材は TLS セッションごとに一意であり、基盤となる TLS チャネルへの暗号的バインディングを必要とするアプリケーションレベルのプロトコルの鍵を導出するために安全に使用できます。
注:この 機能は バックエンド固有であり、現在は OpenSSL のサポートが必要です。
警告: 一意かつ衝突耐性のあるエクスポーターラベルを定義するのは、アプリケーションの 責任です。異なる目的でラベルやコンテキストを再利用すると、見過ごされがちなセキュリティ上の脆弱性につながる可能性があります。
この関数は Qt 6.12 で導入されました。
takeKeyingMaterial()も参照してください 。
void QSslConfiguration::setLocalCertificate(const QSslCertificate &certificate)
SSLハンドシェイク中に相手側に提示する証明書を「certificate 」に設定します。
接続が確立された後に証明書を設定しても、何の効果もありません。
証明書は、SSL プロセスで使用される識別手段です。リモート側は、ローカル証明書を使用して、その認証局 (CA) リストと照合し、ローカルユーザーの身元を確認します。HTTP による Web ブラウジングなど、ほとんどの場合、サーバーのみがクライアントに対して身元を証明するため、クライアントは証明書を送信しません。
localCertificate()も参照してください 。
void QSslConfiguration::setLocalCertificateChain(const QList<QSslCertificate> &localChain)
SSLハンドシェイク中に相手側に提示する証明書チェーンを、localChain に設定します。
接続が確立された後に証明書チェーンを設定しても、何の効果もありません。
証明書は、SSL プロセスで使用される識別手段です。ローカル証明書は、リモート側によって、その認証機関 (CA) リストと照合してローカルユーザーの身元を確認するために使用されます。HTTP による Web ブラウジングなど、ほとんどの場合、サーバーのみがクライアントに対して身元を証明するため、クライアントは証明書を送信しません。
QSslConfiguration::setLocalCertificate() とは異なり、このメソッドでは、証明書を検証するために必要な中間証明書を任意に指定できます。リストの最初の項目は、リーフ証明書でなければなりません。
localCertificateChain()も参照してください 。
[since 6.0] void QSslConfiguration::setMissingCertificateIsFatal(bool cannotRecover)
cannotRecover が true であり、使用中の検証モードがQSslSocket::VerifyPeer またはQSslSocket::AutoVerifyPeer (クライアント側のソケットの場合)である場合、相手側の証明書が欠落していることは、無視できない回復不可能なエラーとして扱われます。接続を閉じる前に、相手側に適切な警告メッセージが送信されます。
注: Qt が OpenSSL バックエンドを使用して構成およびビルドされている場合にのみ 利用可能です。
この関数は Qt 6.0 で導入されました。
関連項目: QSslSocket::ignoreSslErrors()、QSslSocket::PeerVerifyMode 、およびmissingCertificateIsFatal()。
void QSslConfiguration::setOcspStaplingEnabled(bool enabled)
enabled がtrueの場合、クライアントQSslSocket は、ハンドシェイクを開始する際に相手側に証明書ステータス要求を送信します。ハンドシェイク中、QSslSocket はサーバーからの応答を検証します。この値は、ハンドシェイクが開始される前に設定する必要があります。
「ocspStaplingEnabled()」も参照してください 。
void QSslConfiguration::setPeerVerifyDepth(int depth)
SSLハンドシェイクフェーズ中に、ピアの証明書チェーン内で検証する証明書の最大数をdepth に設定します。深度を0に設定すると、最大深度が設定されないことを意味し、証明書チェーン全体を検証することを示します。
証明書は発行順に検証され、まず相手側の自身の証明書から始まり、次にその発行者の証明書という順で検証されます。
peerVerifyDepth() およびsetPeerVerifyMode()も参照してください 。
void QSslConfiguration::setPeerVerifyMode(QSslSocket::PeerVerifyMode mode)
検証モードをmode に設定します。このモードでは、QSslSocket が相手側(つまり、クライアントがサーバーに証明書を要求するか、サーバーがクライアントに証明書を要求するか)から証明書を要求するかどうか、およびその証明書が有効であることを必須とするかどうかを決定します。
デフォルトのモードは AutoVerifyPeer であり、これはQSslSocket に対し、クライアントに対しては VerifyPeer を、サーバーに対しては QueryPeer を使用するよう指示します。
peerVerifyMode()も参照してください 。
void QSslConfiguration::setPreSharedKeyIdentityHint(const QByteArray &hint)
プレシェアードキー認証の識別子ヒントを `hint` に設定します。これは次に開始されるハンドシェイクに影響します。すでに暗号化されているソケットに対してこの関数を呼び出しても、そのソケットの識別子ヒントには影響しません。
IDヒントは、QSslSocket::SslServerMode でのみ使用されます!
preSharedKeyIdentityHint()も参照してください 。
void QSslConfiguration::setPrivateKey(const QSslKey &key)
接続の秘密鍵key をkey に設定します。秘密鍵とローカル証明書certificate は、SSLの相手先に自身の身元を証明する必要があるクライアントおよびサーバーによって使用されます。
SSLサーバーソケットを作成する場合は、鍵とローカル証明書の両方が必要です。SSLクライアントソケットを作成する場合、クライアントがSSLサーバーに対して自身の身元を証明する必要がある場合は、鍵とローカル証明書が必要です。
privateKey() およびsetLocalCertificate()も参照してください 。
void QSslConfiguration::setProtocol(QSsl::SslProtocol protocol)
この設定のプロトコル設定を「protocol 」に設定します。
接続がすでに確立された後にプロトコル設定を行っても、何の効果もありません。
protocol()も参照してください 。
void QSslConfiguration::setSessionTicket(const QByteArray &sessionTicket)
SSLハンドシェイクで使用するセッションチケットを設定します。これが機能するには、QSsl::SslOptionDisableSessionPersistence をオフにする必要があり、sessionTicket はsessionTicket()によって返されるASN.1形式である必要があります。
sessionTicket()、QSsl::SslOptionDisableSessionPersistence 、setSslOption()、およびQSslSocket::newSessionTicketReceived()も参照してください 。
void QSslConfiguration::setSslOption(QSsl::SslOption option, bool on)
SSL互換性option を有効または無効にします。on がtrueの場合、option が有効になります。on がfalseの場合、option は無効になります。
testSslOption()も参照してください 。
[static] QList<QSslCipher> QSslConfiguration::supportedCiphers()
このシステムでサポートされている暗号アルゴリズムのリストを返します。このリストはシステムのSSLライブラリによって設定されており、システムごとに異なる場合があります。
ciphers() およびsetCiphers()も参照してください 。
[static] QList<QSslEllipticCurve> QSslConfiguration::supportedEllipticCurves()
このシステムでサポートされている楕円曲線のリストを返します。このリストはシステムのSSLライブラリによって設定され、システムごとに異なる場合があります。
ellipticCurves() およびsetEllipticCurves()も参照してください 。
[noexcept] void QSslConfiguration::swap(QSslConfiguration &other)
このSSL設定インスタンスをother と入れ替えます。この操作は非常に高速で、失敗することはありません。
[static] QList<QSslCertificate> QSslConfiguration::systemCaCertificates()
この関数は、オペレーティングシステムが提供するCA証明書データベースを提供します。この関数が返すCA証明書データベースは、デフォルトのQSslConfiguration 上でcaCertificates()が返すデータベースを初期化する際に使用されます。
関連項目: caCertificates()、setCaCertificates()、defaultConfiguration()、addCaCertificate()、およびaddCaCertificates()。
[since 6.12] QList<QSslKeyingMaterial> QSslConfiguration::takeKeyingMaterial()
このSSL接続の鍵素材の設定を返します。
キーイングマテリアルを使用すると、アプリケーションは、RFC 5705 および RFC 8446 で定義されている TLS エクスポーター機構を利用して、確立された TLS セッションから追加の暗号素材を導出することができます。
返されるリストの各エントリは、エクスポーターラベル、オプションのコンテキスト、およびエクスポートされるデータの希望長を含む、エクスポートされたキーイングマテリアルの要求を表しています。実際のキーイングマテリアルは、ハンドシェイクが成功した後にのみ利用可能になります。
エクスポートされたキーイングマテリアルは、特定の TLS セッションに紐付けられており、暗号化に使用されるセッションキーとは暗号的に独立しています。これは、チャネルバインディングや、TLS 上に構築されたプロトコルの鍵導出など、アプリケーション固有の目的で使用できます。
キー素材の設定が行われていない場合、この関数は空のリストを返します。
値は共有されるのではなく引き渡されます。つまり、この構成に残されたエントリは値を持たないclones であるため、それらを使用して同じキー素材を再度要求することが可能です。導出された値を持つのは、返されたエントリのみです。
注: キー素材の利用可能性は 、TLS バックエンドによって異なります。現在、この機能は OpenSSL を使用している場合にのみサポートされています。
警告:エクスポートされた キー素材は慎重に取り扱う必要があります。不適切な使用は、TLS セッションや上位プロトコルのセキュリティを損なう可能性があります。
この関数は Qt 6.12 で導入されました。
関連項目: setKeyingMaterial()。
[since 6.12] std::optional<QSslKeyingMaterial> QSslConfiguration::takeKeyingMaterial(const QSslKeyingMaterial &material)
指定されたmaterial リクエストに対する派生キーイングマテリアルを返します。
ラベル、コンテキスト、および要求されたサイズに基づいて、material に一致するキー生成材料リストからのエントリを返します。一致するエントリが見つからない場合は、std::nullopt を返します。
一致するエントリが見つかり、TLS ハンドシェイクが正常に完了した場合、返されるオブジェクトの `QSslKeyingMaterial::value()` には、導出されたキー素材が含まれます。
この値は一度しか取得できません。残されたエントリは値を持たないclone となりますが、依然としてmaterial と一致します。
この関数は Qt 6.12 で導入されました。
takeKeyingMaterial() およびsetKeyingMaterial()も参照してください 。
bool QSslConfiguration::testSslOption(QSsl::SslOption option) const
指定されたSSL互換性option が有効になっている場合、true を返します。
setSslOption()も参照してください 。
bool QSslConfiguration::operator!=(const QSslConfiguration &other) const
この `QSslConfiguration ` が `other` と異なる場合、true を返します。2つの `QSslConfiguration ` オブジェクトは、状態や設定のいずれかが異なる場合、異なるものとみなされます。
operator==()も参照してください 。
QSslConfiguration &QSslConfiguration::operator=(const QSslConfiguration &other)
other の設定と状態をコピーします。other がnullの場合、このオブジェクトもnullになります。
bool QSslConfiguration::operator==(const QSslConfiguration &other) const
この `QSslConfiguration ` オブジェクトが `other` と等しい場合、true を返します。
2つのQSslConfiguration オブジェクトは、設定と状態が完全に同一である場合に等しいとみなされます。
operator!=()も参照してください 。
© 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.