Класс QSslCertificate
Класс QSslCertificate предоставляет удобный API для X509 сертификата. Подробнее...
| Заголовок: | #include <QSslCertificate> |
| CMake: | find_package(Qt6 COMPONENTS Network REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Network) |
| qmake: | QT += network |
Примечание: Все функции в этом классе являются повторно-входными.
Типы публичного доступа
| Перечисление | PatternSyntax { RegularExpression, Wildcard, FixedString } |
| Перечисление | SubjectInfo { Organization, CommonName, LocalityName, OrganizationalUnitName, CountryName, …, EmailAddress } |
Функции публичного доступа
| QSslCertificate(const QSslCertificate &other) | |
| QSslCertificate(const QByteArray &data = QByteArray(), QSsl::EncodingFormat format = QSsl::Pem) | |
| QSslCertificate(QIODevice *device, QSsl::EncodingFormat format = QSsl::Pem) | |
| QSslCertificate & | operator=(const 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 |
Статические публичные члены
| 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. Наиболее распространённый способ — вызов QSslSocket::peerCertificate(), который возвращает объект QSslCertificate, или QSslSocket::peerCertificateChain(), который возвращает список таких объектов. Вы также можете загрузить сертификаты из DER (двоичного) или PEM (Base64) пакета, обычно хранящегося в одном или нескольких локальных файлах или в ресурсах Qt.
Вы можете вызвать isNull(), чтобы проверить, является ли ваш сертификат нулевым. По умолчанию QSslCertificate создаёт нулевой сертификат. Нулевой сертификат недействителен, но недействительный сертификат не обязательно нулевой. Если вы хотите сбросить всё содержимое сертификата, вызовите clear().
После загрузки сертификата вы можете получить информацию о сертификате, его владельце и издателе, вызвав одну из многочисленных функций-акцессоров, включая version(), serialNumber(), issuerInfo() и subjectInfo(). Вы можете вызвать effectiveDate() и expiryDate() для проверки, когда сертификат начинает действовать и когда он истекает. Функция publicKey() возвращает открытый ключ владельца сертификата в виде QSslKey. Вы можете вызвать issuerInfo() или subjectInfo(), чтобы получить подробную информацию об издателе сертификата и его владельце.
Внутренне QSslCertificate хранится как структура X509. Вы можете получить доступ к этому дескриптору, вызвав handle(), но результаты, вероятно, не будут портативными.
См. также QSslSocket, QSslKey, QSslCipher и QSslError.
Документация по типам членов
[since 5.15] перечисление QSslCertificate::PatternSyntax
Синтаксис, используемый для интерпретации шаблона.
| Константа | Значение | Описание |
|---|---|---|
QSslCertificate::PatternSyntax::RegularExpression |
0 |
Богатый синтаксис сопоставления шаблонов, похожий на Perl. |
QSslCertificate::PatternSyntax::Wildcard |
1 |
Предлагает простой синтаксис сопоставления шаблонов, аналогичный используемому оболочками (интерпретаторами команд) для «глобального поиска файлов». См. Сопоставление шаблонов QRegularExpression. |
QSslCertificate::PatternSyntax::FixedString |
2 |
Шаблон — это фиксированная строка. Это эквивалентно использованию шаблона RegularExpression для строки, в которой все метасимволы экранированы с помощью escape(). Это значение по умолчанию. |
Это перечисление было введено или изменено в Qt 5.15.
перечисление QSslCertificate::SubjectInfo
Описывает ключи, которые вы можете передать в QSslCertificate::issuerInfo() или QSslCertificate::subjectInfo(), чтобы получить информацию об издателе сертификата или субъекте.
| Константа | Значение | Описание |
|---|---|---|
QSslCertificate::Organization |
0 |
«O» Название организации. |
QSslCertificate::CommonName |
1 |
«CN» Общее имя; чаще всего используется для хранения имени хоста. |
QSslCertificate::LocalityName |
2 |
«L» Местность. |
QSslCertificate::OrganizationalUnitName |
3 |
«OU» Название организационной единицы. |
QSslCertificate::CountryName |
4 |
«C» Страна. |
QSslCertificate::StateOrProvinceName |
5 |
«ST» Штат или провинция. |
QSslCertificate::DistinguishedNameQualifier |
6 |
Квалификатор имени отличительных свойств |
QSslCertificate::SerialNumber |
7 |
Серийный номер сертификата |
QSslCertificate::EmailAddress |
8 |
Электронный адрес, связанный с сертификатом |
Документация по функциям членов
QSslCertificate::QSslCertificate(const QSslCertificate &other)
Создает точную копию other.
QSslCertificate::QSslCertificate(const QByteArray &data = QByteArray(), QSsl::EncodingFormat format = QSsl::Pem)
Создает QSslCertificate, анализируя закодированные данные data в формате format и используя первый найденный сертификат. Позже вы можете вызвать isNull(), чтобы проверить, содержали ли data сертификат и был ли он успешно загружен.
QSslCertificate::QSslCertificate(QIODevice *device, QSsl::EncodingFormat format = QSsl::Pem)
Создает QSslCertificate, считывая закодированные данные format из device и используя первый найденный сертификат. Позже вы можете вызвать isNull(), чтобы проверить, содержал ли device сертификат и был ли он успешно загружен.
QSslCertificate &QSslCertificate::operator=(const QSslCertificate &other)
Копирует содержимое other в этот сертификат, делая два сертификата идентичными.
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
Возвращает дату и время, до которого сертификат действителен, или пустое QDateTime, если это нулевой сертификат.
См. также effectiveDate().
[since 5.0] QList<QSslCertificateExtension> QSslCertificate::extensions() const
Возвращает список, содержащий расширения X509 этого сертификата.
Эта функция была введена в Qt 5.0.
[static] QList<QSslCertificate> QSslCertificate::fromData(const QByteArray &data, QSsl::EncodingFormat format = QSsl::Pem)
Ищет и анализирует все сертификаты в data, закодированные в указанном формате format, и возвращает их в списке сертификатов.
См. также fromDevice().
[static] QList<QSslCertificate> QSslCertificate::fromDevice(QIODevice *device, QSsl::EncodingFormat format = QSsl::Pem)
Ищет и анализирует все сертификаты в device, закодированные в указанном формате format, и возвращает их в списке сертификатов.
См. также fromData().
[static, since 5.15] QList<QSslCertificate> QSslCertificate::fromPath(const QString &path, QSsl::EncodingFormat format = QSsl::Pem, QSslCertificate::PatternSyntax syntax = PatternSyntax::FixedString)
Ищет все файлы в path для сертификатов, закодированных в указанном формате format, и возвращает их в списке. path должен быть файлом или шаблоном, соответствующим одному или нескольким файлам, как указано в syntax.
Пример:
const auto certs = QSslCertificate::fromPath("C:/ssl/certificate.*.pem",
QSsl::Pem, QSslCertificate::Wildcard);
for (const QSslCertificate &cert : certs) {
qDebug() << cert.issuerInfo(QSslCertificate::Organization);
} Эта функция была введена в Qt 5.15.
См. также fromData().
Qt::HANDLE QSslCertificate::handle() const
Возвращает указатель на системную обработку сертификата, если таковая имеется, иначе nullptr.
Вы можете использовать эту обработку вместе с системным API для доступа к расширенной информации о сертификате.
Предупреждение: Использование этой функции с высокой вероятностью не является переносимым, и её возвращаемое значение может отличаться от платформы к платформе или меняться от одной версии к другой.
[static, since 5.4] bool QSslCertificate::importPkcs12(QIODevice *device, QSslKey *key, QSslCertificate *certificate, QList<QSslCertificate> *caCertificates = nullptr, const QByteArray &passPhrase = QByteArray())
Импортирует файл PKCS#12 (pfx) из указанного device. Файл PKCS#12 — это пакет, который может содержать несколько сертификатов и ключей. Этот метод считывает один key, его certificate и любые связанные caCertificates из пакета. Если указана passPhrase, она будет использоваться для дешифрования пакета. Возвращает true в случае успешной загрузки файла PKCS#12.
Примечание: device должен быть открыт и готов к чтению.
Эта функция была введена в Qt 5.4.
bool QSslCertificate::isBlacklisted() const
Возвращает true если этот сертификат занесён в чёрный список; в противном случае возвращает false.
См. также isNull().
bool QSslCertificate::isNull() const
Возвращает true если это пустой сертификат (т.е. сертификат без содержимого); в противном случае возвращает false.
По умолчанию, QSslCertificate создаёт пустой сертификат.
См. также clear().
[since 5.4] bool QSslCertificate::isSelfSigned() const
Возвращает true если этот сертификат самоподписанный; в противном случае возвращает false.
Сертификат считается самоподписанным, если его издатель и подписчик идентичны.
Эта функция была введена в Qt 5.4.
[since 5.12] QString QSslCertificate::issuerDisplayName() const
Возвращает имя, описывающее издателя. Возвращает QSslCertificate::CommonName, если доступно, в противном случае возвращает первое значение QSslCertificate::Organization или QSslCertificate::OrganizationalUnitName.
Эта функция была введена в Qt 5.12.
См. также issuerInfo().
QStringList QSslCertificate::issuerInfo(QSslCertificate::SubjectInfo subject) const
Возвращает информацию об издателе для subject из сертификата или пустой список, если информация для subject в сертификате отсутствует. Может быть несколько записей каждого типа.
См. также subjectInfo().
QStringList QSslCertificate::issuerInfo(const QByteArray &attribute) const
Возвращает информацию об издателе для attribute из сертификата или пустой список, если информация для attribute в сертификате отсутствует. Может быть несколько записей для одного атрибута.
См. также subjectInfo().
[since 5.0] QList<QByteArray> QSslCertificate::issuerInfoAttributes() const
Возвращает список атрибутов, которые имеют значения в информации об издателе этого сертификата. Информацию, связанную с заданным атрибутом, можно получить с помощью метода issuerInfo(). Обратите внимание, что этот список может включать OID для любых элементов, которые не известны обратному вызову SSL.
Эта функция была введена в Qt 5.0.
См. также subjectInfo().
QSslKey QSslCertificate::publicKey() const
Возвращает открытый ключ субъекта сертификата.
QByteArray QSslCertificate::serialNumber() const
Возвращает строку серийного номера сертификата в шестнадцатеричном формате.
QMultiMap<QSsl::AlternativeNameEntryType, QString> QSslCertificate::subjectAlternativeNames() const
Возвращает список альтернативных имён субъекта для этого сертификата. Альтернативные имена обычно содержат имена хостов, необязательно с подстановочными знаками, которые действительны для этого сертификата.
Эти имена проверяются по имени хоста подключённого узла, если информация о субъекте для CommonName не определяет действительное имя хоста или имя из информации о субъекте не совпадает с именем хоста узла.
См. также subjectInfo().
[since 5.12] QString QSslCertificate::subjectDisplayName() const
Возвращает имя, описывающее субъект. Возвращает QSslCertificate::CommonName, если доступно, в противном случае возвращает первое значение QSslCertificate::Organization или QSslCertificate::OrganizationalUnitName.
Эта функция была введена в Qt 5.12.
См. также subjectInfo().
QStringList QSslCertificate::subjectInfo(QSslCertificate::SubjectInfo subject) const
Возвращает информацию для subject или пустой список, если информация для subject в сертификате отсутствует. Может быть несколько записей каждого типа.
См. также issuerInfo().
QStringList QSslCertificate::subjectInfo(const QByteArray &attribute) const
Возвращает информацию о субъекте для attribute или пустой список, если информация для attribute в сертификате отсутствует. Может быть несколько записей для одного атрибута.
См. также issuerInfo().
[since 5.0] QList<QByteArray> QSslCertificate::subjectInfoAttributes() const
Возвращает список атрибутов, которые имеют значения в информации о субъекте этого сертификата. Информацию, связанную с заданным атрибутом, можно получить с помощью метода subjectInfo(). Обратите внимание, что этот список может включать OID для любых элементов, которые не известны обратному вызову SSL.
Эта функция была введена в Qt 5.0.
См. также subjectInfo().
[since 5.0] void QSslCertificate::swap(QSslCertificate &other)
Меняет местами этот экземпляр сертификата с other. Эта функция очень быстрая и никогда не приводит к ошибке.
Эта функция была введена в Qt 5.0.
QByteArray QSslCertificate::toDer() const
Возвращает этот сертификат, преобразованный в DER (бинарное) представление.
QByteArray QSslCertificate::toPem() const
Возвращает этот сертификат, преобразованный в PEM (Base64) представление.
[since 5.0] QString QSslCertificate::toText() const
Возвращает этот сертификат, преобразованный в удобочитаемое текстовое представление.
Эта функция была введена в Qt 5.0.
[static, since 5.0] QList<QSslError> QSslCertificate::verify(const QList<QSslCertificate> &certificateChain, const QString &hostName = QString())
Проверяет цепочку сертификатов. Цепочка для проверки передаётся в параметре certificateChain. Первый сертификат в списке должен быть сертификатом листа цепочки для проверки. Если hostName указан, сертификат также проверяется на соответствие указанному имени хоста.
Обратите внимание, что корневой (CA) сертификат не должен включаться в список для проверки, он будет автоматически найден с помощью списка CA, указанного в стандартной QSslConfiguration, и, при возможности, загружаемых по запросу сертификатов CA в Unix и Windows.
Эта функция была введена в Qt 5.0.
QByteArray QSslCertificate::version() const
Возвращает строку версии сертификата.
bool QSslCertificate::operator!=(const QSslCertificate &other) const
Возвращает true если этот сертификат не такой же, как other; в противном случае возвращает false.
bool QSslCertificate::operator==(const QSslCertificate &other) const
Возвращает true если этот сертификат такой же, как other; в противном случае возвращает false.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.0/qsslcertificate.html