QSslConfiguration Class
QSslConfiguration クラスは、SSL 接続の設定と状態を保持します。詳細...
Header: | #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 ネットワーククラスによって使用され、開いている 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)
certificate をこの構成の CA 証明書データベースに追加する。証明書データベースは 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
バックエンド固有の設定を返します。
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-bit 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
setOCSPStaplingEnabled() で OCSP ステープリングが有効になっていれば true を返し、そうでなければ false を返す (これがデフォルト値)。
setOcspStaplingEnabled()も参照 。
QSslCertificate QSslConfiguration::peerCertificate() const
相手のデジタル証明書 (つまり、接続しているホストの即時証明書) を返すか、相手が証明書を割り当てていない場合は NULL を返す。
相手の証明書はハンドシェイクの段階で自動的にチェックされるため、この関数は通常、表示や接続診断の目的で証明書を取得するために使用されます。この関数には、相手のホスト名、証明書の発行者、相手の公開鍵などの情報が含まれています。
ピア証明書はハンドシェーク段階で設定されるため、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)
backend-specific configuration のオプション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 が 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()も参照してください 。
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 が偽の場合、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!=()も参照 。
©2024 The Qt Company Ltd. ここに含まれるドキュメントの著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。