QSslCertificate Class

QSslCertificate クラスは、X509 証明書の便利な API を提供します。詳細...

Header: #include <QSslCertificate>
CMake: find_package(Qt6 REQUIRED COMPONENTS Network)
target_link_libraries(mytarget PRIVATE Qt6::Network)
qmake: QT += network

注意:このクラスの関数はすべてリエントラントです。

パブリック型

enum class PatternSyntax { RegularExpression, Wildcard, FixedString }
enum SubjectInfo { Organization, CommonName, LocalityName, OrganizationalUnitName, CountryName, …, EmailAddress }

パブリック関数

QSslCertificate(QIODevice *device, QSsl::EncodingFormat format = QSsl::Pem)
QSslCertificate(const QByteArray &data = QByteArray(), QSsl::EncodingFormat format = QSsl::Pem)
QSslCertificate(const QSslCertificate &other)
(since 6.8) QSslCertificate(QSslCertificate &&other)
~QSslCertificate()
void clear()
QByteArray digest(QCryptographicHash::Algorithm algorithm = QCryptographicHash::Md5) const
QDateTime effectiveDate() const
QDateTime expiryDate() const
QList<QSslCertificateExtension> extensions() const
Qt::HANDLE handle() const
bool isBlacklisted() const
bool isNull() const
bool isSelfSigned() const
QString issuerDisplayName() const
QStringList issuerInfo(QSslCertificate::SubjectInfo subject) const
QStringList issuerInfo(const QByteArray &attribute) const
QList<QByteArray> issuerInfoAttributes() const
QSslKey publicKey() const
QByteArray serialNumber() const
QMultiMap<QSsl::AlternativeNameEntryType, QString> subjectAlternativeNames() const
QString subjectDisplayName() const
QStringList subjectInfo(QSslCertificate::SubjectInfo subject) const
QStringList subjectInfo(const QByteArray &attribute) const
QList<QByteArray> subjectInfoAttributes() const
void swap(QSslCertificate &other)
QByteArray toDer() const
QByteArray toPem() const
QString toText() const
QByteArray version() const
bool operator!=(const QSslCertificate &other) const
QSslCertificate &operator=(const QSslCertificate &other)
bool operator==(const QSslCertificate &other) const

静的パブリックメンバ

QList<QSslCertificate> fromData(const QByteArray &data, QSsl::EncodingFormat format = QSsl::Pem)
QList<QSslCertificate> fromDevice(QIODevice *device, QSsl::EncodingFormat format = QSsl::Pem)
QList<QSslCertificate> fromPath(const QString &path, QSsl::EncodingFormat format = QSsl::Pem, QSslCertificate::PatternSyntax syntax = PatternSyntax::FixedString)
bool importPkcs12(QIODevice *device, QSslKey *key, QSslCertificate *certificate, QList<QSslCertificate> *caCertificates = nullptr, const QByteArray &passPhrase = QByteArray())
QList<QSslError> verify(const QList<QSslCertificate> &certificateChain, const QString &hostName = QString())

詳細説明

QSslCertificate は X509 証明書を格納し、ローカルホスト、リモート接続されたピア、または信頼できるサードパーティ認証局の身元を確認し、情報を格納するために一般的に使用されます。

QSslCertificate を構築する方法はたくさんあります。最も一般的な方法は、QSslCertificate オブジェクトを返すQSslSocket::peerCertificate() や、そのリストを返すQSslSocket::peerCertificateChain() を呼び出すことです。DER(バイナリ)または PEM(Base64)エンコードされたバンドルから証明書をロードすることもできます。

isNull() を呼び出すと、証明書が NULL かどうかを確認できます。デフォルトでは、QSslCertificate はヌル証明書を構築します。NULL 証明書は無効ですが、無効な証明書が必ずしも NULL であるとは限りません。証明書の内容をすべてリセットしたい場合は、clear() を呼び出します。

証明書をロードした後は、version()、serialNumber()、issuerInfo()、subjectInfo() など、多数のアクセサ関数のいずれかを呼び出すことで、証明書、そのサブジェクト、発行者に関する情報を調べることができます。effectiveDate() およびexpiryDate() を呼び出すと、証明書の有効開始日および有効期限を確認できます。publicKey() 関数は、証明書のサブジェクトの公開鍵をQSslKey として返します。issuerInfo() またはsubjectInfo() を呼び出すと、証明書の発行者とそのサブジェクトに関する詳細情報を取得できます。

内部的には、QSslCertificate は X509 構造体として格納されています。handle() を呼び出すことで、このハンドルにアクセスすることができるが、結果はポータブルでない可能性が高い。

QSslSocketQSslKeyQSslCipherQSslErrorも参照のこと

メンバ型ドキュメント

enum class QSslCertificate::PatternSyntax

パターンの意味を解釈するための構文。

定数説明
QSslCertificate::PatternSyntax::RegularExpression0リッチな Perl ライクなパターンマッチング構文。
QSslCertificate::PatternSyntax::Wildcard1これは、シェル(コマンド・インタプリタ)が "ファイル・グロビング(file globbing) "のために使用する構文に似た、シンプルなパターンマッチング構文を提供します。QRegularExpression::fromWildcard()を参照。
QSslCertificate::PatternSyntax::FixedString2パターンは固定文字列です。これは、すべてのメタキャラクタを escape() でエスケープした文字列に対して RegularExpression パターンを使用するのと同じです。これがデフォルトです。

enum QSslCertificate::SubjectInfo

証明書の発行者またはサブジェクトに関する情報を取得するために、QSslCertificate::issuerInfo() またはQSslCertificate::subjectInfo() に渡すキーについて説明します。

定数説明
QSslCertificate::Organization0「O" 組織名。
QSslCertificate::CommonName1「ほとんどの場合、これはホスト名を格納するために使用される。
QSslCertificate::LocalityName2"L" 地域。
QSslCertificate::OrganizationalUnitName3"OU" 組織単位名。
QSslCertificate::CountryName4「C" 国。
QSslCertificate::StateOrProvinceName5"ST" 州。
QSslCertificate::DistinguishedNameQualifier6識別名修飾子
QSslCertificate::SerialNumber7証明書のシリアル番号
QSslCertificate::EmailAddress8証明書に関連付けられた電子メールアドレス

メンバー関数ドキュメント

[explicit] QSslCertificate::QSslCertificate(QIODevice *device, QSsl::EncodingFormat format = QSsl::Pem)

device からformat エンコードされたデータを読み込み、最初に見つかった証明書を使用して QSslCertificate を構築する。後でisNull() を呼び出すことで、device に証明書が含まれているかどうか、またこの証明書が正常にロードされたかどうかを確認することができます。

[explicit] QSslCertificate::QSslCertificate(const QByteArray &data = QByteArray(), QSsl::EncodingFormat format = QSsl::Pem)

format エンコードされたdata を解析し、最初に見つかった証明書を使用して QSslCertificate を構築します。後でisNull() を呼び出すことで、data に証明書が含まれているかどうか、およびこの証明書が正常にロードされたかどうかを確認できます。

QSslCertificate::QSslCertificate(const QSslCertificate &other)

other の同一コピーを構築する。

[noexcept, since 6.8] QSslCertificate::QSslCertificate(QSslCertificate &&other)

移動-other から新しい QSslCertificate を構築する。

注: 移動元のオブジェクトother は、部分的に形成された状態に置かれます。この状態では、有効な操作は破棄と新しい値の割り当てのみです。

この関数は Qt 6.8 で導入されました。

[noexcept] QSslCertificate::~QSslCertificate()

QSslCertificate を破棄します。

void QSslCertificate::clear()

この証明書の内容をクリアし、ヌル証明書にします。

isNull()も参照してください

QByteArray QSslCertificate::digest(QCryptographicHash::Algorithm algorithm = QCryptographicHash::Md5) const

この証明書の暗号化ダイジェストを返します。デフォルトでは MD5 ダイジェストが生成されますが、カスタムのalgorithm を指定することもできます。

QDateTime QSslCertificate::effectiveDate() const

証明書が有効になる日時を返します。ヌル証明書の場合は空のQDateTime を返します。

expiryDate()も参照ください

QDateTime QSslCertificate::expiryDate() const

証明書の有効期限が切れる日付、またはこれが NULL 証明書の場合は空のQDateTime を返します。

effectiveDate() も参照

QList<QSslCertificateExtension> QSslCertificate::extensions() const

この証明書の X509 拡張子を含むリストを返します。

[static] QList<QSslCertificate> QSslCertificate::fromData(const QByteArray &data, QSsl::EncodingFormat format = QSsl::Pem)

指定されたformat でエンコードされているdata 内のすべての証明書を検索して解析し、証明書のリストとして返します。

fromDevice()も参照

[static] QList<QSslCertificate> QSslCertificate::fromDevice(QIODevice *device, QSsl::EncodingFormat format = QSsl::Pem)

指定されたformat でエンコードされているdevice 内のすべての証明書を検索および解析し、証明書のリストとして返します。

fromData() も参照

[static] QList<QSslCertificate> QSslCertificate::fromPath(const QString &path, QSsl::EncodingFormat format = QSsl::Pem, QSslCertificate::PatternSyntax syntax = PatternSyntax::FixedString)

指定されたformat でエンコードされた証明書について、path 内のすべてのファイルを検索し、リストにして返します。path は、syntax で指定されたファイルまたは 1 つ以上のファイルにマッチするパターンでなければなりません。

例:

const auto certs = QSslCertificate::fromPath("C:/ssl/certificate.*.pem",
                                             QSsl::Pem, QSslCertificate::Wildcard);
for (const QSslCertificate &cert : certs) {
    qDebug() << cert.issuerInfo(QSslCertificate::Organization);
}

fromData()も参照のこと

Qt::HANDLE QSslCertificate::handle() const

ネイティブ証明書ハンドルへのポインタがあればそれを返し、なければnullptr を返す。

このハンドルとネイティブAPIを使用して、証明書に関する拡張情報にアクセスすることができます。

警告 この関数を使用すると、高い確率で移植不可能になり、その返り値はプラットフォームによって異なったり、マイナー・リリースごとに変更されたりする可能性があります。

[static] bool QSslCertificate::importPkcs12(QIODevice *device, QSslKey *key, QSslCertificate *certificate, QList<QSslCertificate> *caCertificates = nullptr, const QByteArray &passPhrase = QByteArray())

指定されたdevice から PKCS#12 (pfx) ファイルをインポートします。PKCS#12 ファイルは、複数の証明書と鍵を含むことができるバンドルです。このメソッドは、バンドルから単一のkey 、そのcertificate 、および関連するcaCertificates を読み込む。passPhrase が指定されている場合は、これを使用してバンドルを復号化する。PKCS#12 ファイルの読み込みに成功した場合はtrue を返す。

注意: device は開いていて、読み込み可能な状態でなければならない。

bool QSslCertificate::isBlacklisted() const

この証明書がブラックリストに載っている場合はtrue を返し、そうでない場合はfalse を返す。

isNull()も参照のこと

bool QSslCertificate::isNull() const

これがヌル証明書(すなわち、内容のない証明書)である場合はtrue を返し、そうでない場合はfalse を返す。

デフォルトでは、QSslCertificate は NULL 証明書を作成します。

clear()も参照

bool QSslCertificate::isSelfSigned() const

この証明書が自己署名されている場合はtrue を返し、そうでない場合はfalse を返す。

証明書は、発行者とサブジェクトが同一であれば自己署名されているとみなされます。

QString QSslCertificate::issuerDisplayName() const

発行者を表す名前を返します。利用可能であればQSslCertificate::CommonName を返し、そうでなければ最初のQSslCertificate::Organization または最初のQSslCertificate::OrganizationalUnitName を返します。

issuerInfo()も参照

QStringList QSslCertificate::issuerInfo(QSslCertificate::SubjectInfo subject) const

証明書に含まれるsubject の発行者情報、または証明書にsubject の情報がない場合は空のリストを返します。各タイプのエントリは複数存在する可能性があります。

subjectInfo()も参照

QStringList QSslCertificate::issuerInfo(const QByteArray &attribute) const

証明書からattribute の発行者情報を返すか、証明書にattribute の情報がない場合は空リストを返す。ひとつの属性に複数のエントリを指定することもできます。

subjectInfo()も参照

QList<QByteArray> QSslCertificate::issuerInfoAttributes() const

この証明書の発行者情報に値を持つ属性のリストを返します。指定した属性に関連する情報には、issuerInfo() メソッドを使用してアクセスできます。このリストには、SSL バックエンドが知らない要素の OID も含まれることに注意しましょう。

subjectInfo()も参照

QSslKey QSslCertificate::publicKey() const

証明書サブジェクトの公開鍵を返します。

QByteArray QSslCertificate::serialNumber() const

証明書のシリアル番号文字列を 16 進形式で返します。

QMultiMap<QSsl::AlternativeNameEntryType, QString> QSslCertificate::subjectAlternativeNames() const

この証明書の代替サブジェクト名のリストを返します。代替名には通常、この証明書で有効なホスト名 (ワイルドカードを使用することも可能) が含まれます。

これらの名前は、CommonName のサブジェクト情報が有効なホスト名を定義していないか、サブジェクト情報名が相手のホスト名と一致しない場合に、接続相手のホスト名と照合してテストされる。

subjectInfo()も参照のこと

QString QSslCertificate::subjectDisplayName() const

サブジェクトを表す名前を返します。利用可能な場合はQSslCertificate::CommonName を返し、そうでない場合は最初のQSslCertificate::Organization または最初のQSslCertificate::OrganizationalUnitName にフォールバックします。

subjectInfo()も参照

QStringList QSslCertificate::subjectInfo(QSslCertificate::SubjectInfo subject) const

証明書にsubject の情報がない場合、subject の情報を返すか、空のリストを返します。各タイプのエントリは複数存在する可能性があります。

issuerInfo()も参照

QStringList QSslCertificate::subjectInfo(const QByteArray &attribute) const

attribute のサブジェクト情報、または証明書内にattribute の情報がない場合は空のリストを返す。属性には複数のエントリを指定できます。

issuerInfo()も参照

QList<QByteArray> QSslCertificate::subjectInfoAttributes() const

この証明書のサブジェクト情報に値を持つ属性のリストを返します。指定された属性に関連付けられた情報には、subjectInfo() メソッドを使用してアクセスできる。このリストには、SSL バックエンドが知らない要素の OID も含まれることに注意しましょう。

subjectInfo()も参照

[noexcept] void QSslCertificate::swap(QSslCertificate &other)

この証明書のインスタンスをother と交換する。この関数は非常に高速で、失敗することはありません。

QByteArray QSslCertificate::toDer() const

この証明書を DER (バイナリ) エンコード表現に変換して返します。

QByteArray QSslCertificate::toPem() const

この証明書を PEM(Base64)エンコードした表現に変換して返します。

QString QSslCertificate::toText() const

この証明書を人間が読めるテキスト表現に変換して返します。

[static] QList<QSslError> QSslCertificate::verify(const QList<QSslCertificate> &certificateChain, const QString &hostName = QString())

証明書チェーンを検証します。検証するチェインをcertificateChain パラメータで渡します。リストの最初の証明書は、検証する チェーンのリーフ証明書でなければならない。hostName が指定された場合、証明書は、指定されたホスト名に対して有効かどうかもチェックされる。

ルート(CA)証明書を検証するリストに含めるべきでないことに注意。これは、デフォルトのQSslConfiguration で指定されているCAリストを使用して自動的に検索され、さらに、可能であれば、UnixとWindowsでオンデマンドでロードされたCA証明書を使用する。

QByteArray QSslCertificate::version() const

証明書のバージョン文字列を返す。

bool QSslCertificate::operator!=(const QSslCertificate &other) const

この証明書がother と同じでない場合はtrue を返し、そうでない場合はfalse を返す。

QSslCertificate &QSslCertificate::operator=(const QSslCertificate &other)

other の内容をこの証明書にコピーし、2 つの証明書を同一にします。

bool QSslCertificate::operator==(const QSslCertificate &other) const

この証明書がother と同じ場合はtrue を返し、そうでない場合はfalse を返します。

本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。