Класс 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::fromWildcard(). |
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 |
Квалификатор имени DN |
QSslCertificate::SerialNumber |
7 |
Серийный номер сертификата |
QSslCertificate::EmailAddress |
8 |
Электронный адрес, связанный с сертификатом |
Документация по функциям членов
QSslCertificate::QSslCertificate(const QSslCertificate &other)
Создаёт идентичную копию other.
QSslCertificate::QSslCertificate(const QByteArray &data = QByteArray(), QSsl::EncodingFormat format = QSsl::Pem)
Создаёт QSslCertificate путём парсинга данных, закодированных в формате 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.2/qsslcertificate.html