QSslConfiguration Class
QSslConfiguration クラスは、SSL 接続の設定と状態を保持します。詳細...
ヘッダ | #include <QSslConfiguration> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Network) target_link_libraries(mytarget PRIVATE Qt6::Network) |
qmake: | QT += network |
- 継承メンバを含む全メンバのリスト
- QSslConfiguration はNetwork Programming APIおよびImplicitly Shared Classes に含まれています。
注意:このクラスの関数はすべてリエントラントです。
パブリック型
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) |
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) |
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 Networking クラスによって使用され、開いている SSL 接続に関する情報を中継し、アプリケーションがその接続の特定の機能を制御できるようにします。
QSslConfiguration が現在サポートしている設定は以下の通りです:
- 使用する SSL/TLS プロトコル
- 接続中に相手に提示する証明書と、それに関連する秘密鍵
- 接続の暗号化に使用できる暗号
- ピアの証明書を検証するために使用される認証局証明書のリスト
これらの設定は、接続のハンドシェイク中にのみ適用されます。接続が確立された後にこれらを設定しても、何の効果もありません。
QSslConfiguration がサポートする状態は以下のとおりです:
- ハンドシェイク中にピアから提示された証明書と、CA 証明書につながるチェーン。
- このセッションの暗号化に使用される暗号
この状態はSSL接続が開始されると取得できますが、接続が完了する前に取得できるとは限りません。いくつかの設定は 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() は真を返します。
セッターメソッドが呼び出されると、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)
format で指定された形式でエンコードされた証明書をpath 内の全ファイルから検索し、このソケットの 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
backend 固有の設定を返します。
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
現在の Diffie-Hellman パラメータを取得する。
Diffie-Hellman パラメータが設定されていない場合、QSslConfiguration オブジェクトのデフォルトは RFC 3526 の 2048 ビット MODP グループを使用します。
注意: デフォルトのパラメータは、将来の Qt バージョンで変更される可能性があります。そのバージョンがどのようなデフォルトを使用しているかを知るためには、使用しているQtの正確なバージョンのドキュメントを確認してください。
setDiffieHellmanParameters()も参照してください 。
bool QSslConfiguration::dtlsCookieVerificationEnabled() const
この関数は、サーバー側ソケットでDTLSクッキー検証が有効になっていれば真を返す。
setDtlsCookieVerificationEnabled()も参照 。
QList<QSslEllipticCurve> QSslConfiguration::ellipticCurves() const
この接続の現在の楕円曲線リストを返す。このリストはハンドシェーク時に楕円曲線を選択する際に使用されます (楕円曲線暗号を使用する場合)。返される曲線のリストは、優先順位の降順で並べられます (つまり、リストの最初の曲線が最も優先される曲線です)。
デフォルトでは、ハンドシェークフェーズではこのシステムの SSL ライブラリでサポートされている任意のカーブを選択することができます。このシステムの SSL ライブラリがサポートするカーブのリストは QSslSocket::supportedEllipticCurves() によって返されます。
サポートされている暗号のサブセットを指定してsetEllipticCurves() を呼び出すことで、このソケットのセッション暗号の選択に使用する曲線のリストを制限することができます。QSslSocket::supportedEllipticCurves() が返すリストでsetEllipticCurves() を呼び出すことで、全セットを使用するように戻すことができる。
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
QSslConfiguration オブジェクトが NULL の場合は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() を明示的にコールする必要がある。
プロトコルのネゴシエーションができなかったか、拡張が有効になっていなかった場合、 この関数はQByteArray を返すが、これは null である。
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
OCSPステープリングが setOCSPStaplingEnabled() で有効になっていれば真を、そうでなければ偽(これがデフォルト値)を返す。
setOcspStaplingEnabled()も参照 。
QSslCertificate QSslConfiguration::peerCertificate() const
相手のデジタル証明書(つまり、接続しているホストの即時証明書)、または相手が証明書を割り当てていない場合はヌル証明書を返します。
相手の証明書はハンドシェイクの段階で自動的にチェックされるので、 この関数は通常、表示用や接続診断用に証明書を取得するために使用します。この関数には、相手のホスト名、証明書の発行者、相手の公開鍵などの情報が含まれています。
ピア証明書はハンドシェーク・フェーズで設定されるため、QSslSocket::sslErrors() シグナル、QNetworkReply::sslErrors() シグナル、QSslSocket::encrypted() シグナルに接続されたスロットからピア証明書にアクセスしても安全である。
ヌル証明書が返された場合、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
ID ヒントを返します。
setPreSharedKeyIdentityHint()も参照 。
QSslKey QSslConfiguration::privateKey() const
この接続に割り当てられているSSL key または、まだ割り当てられていない場合は null キーを返す。
setPrivateKey() およびlocalCertificate()も参照 。
QSsl::SslProtocol QSslConfiguration::protocol() const
この SSL 設定に設定されているプロトコルを返します。
setProtocol()も参照してください 。
QSslCipher QSslConfiguration::sessionCipher() const
ソケットの暗号化方式cipher を返し、接続が暗号化されていない場合は null を返す。セッションのソケット暗号はハンドシェークフェーズで設定される。この暗号は、ソケットを介して送信されるデータの暗号化と復号化に使用される。
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)
このソケットがサーバとして動作するときに使用する Diffie-Hellman パラメータをdhparams に設定する。
Diffie-Hellman パラメータが設定されていない場合、QSslConfiguration オブジェクトのデフォルトは RFC 3526 の 2048-bit MODP グループである。
6.7以降では、tlsバックエンドがサポートしていれば、空のDiffie-Hellmanパラメータを指定して自動選択(opensslのSSL_CTX_set_dh_autoを参照)を使用することができます。
注意: デフォルトのパラメータは将来の Qt バージョンで変更される可能性があります。そのバージョンがどのようなデフォルトを使用しているか知るためには、使用しているQt の正確なバージョンのドキュメントを確認してください。
diffieHellmanParameters()も参照してください 。
void QSslConfiguration::setDtlsCookieVerificationEnabled(bool enable)
この関数は、enable が真のとき、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()も参照してください 。
void QSslConfiguration::setLocalCertificate(const QSslCertificate &certificate)
SSL ハンドシェイク中に相手に提示する証明書をcertificate に設定する。
接続が確立した後に証明書を設定しても効果はありません。
証明書は SSL プロセスで使用される識別手段です。ローカル証明書は、リモートエンドが認証局のリストに照らし合わせてローカルユーザーの身元を確認するために使用されます。HTTPウェブブラウジングのようなほとんどの場合、サーバーだけがクライアントを識別するので、クライアントは証明書を送信しません。
localCertificate()も参照のこと 。
void QSslConfiguration::setLocalCertificateChain(const QList<QSslCertificate> &localChain)
SSL ハンドシェイク中に相手に提示する証明書チェーンをlocalChain に設定する。
接続が確立した後に証明書チェーンを設定しても効果はありません。
証明書は SSL プロセスで使用される識別手段です。ローカル証明書は、リモートエンドが認証局のリストに照らし合わせてローカルユーザーの身元を確認するために使用されます。HTTPウェブブラウジングのようなほとんどの場合、サーバーだけがクライアントを識別するので、クライアントは証明書を送信しません。
QSslConfiguration::setLocalCertificate() とは異なり、このメソッドでは、証明書を検証するために必要な中間証明書を指定することができる。リストの最初の項目は、リーフ証明書でなければならない。
localCertificateChain()も参照のこと 。
[since 6.0]
void QSslConfiguration::setMissingCertificateIsFatal(bool cannotRecover)
cannotRecover が真で、使用中の検証モードが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 ヒントには影響しない。
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()も参照 。
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!=()も参照 。
© 2025 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.