Как получить сервер QSslCertificate из QNetworkAccessManager и QNetworkRequest?

Я отправляю запросы через QNetworkAccessManager::createRequest(Operation, QNetworkRequest, outgoingData), Я должен убедиться, что отпечаток SSL-сертификата - тот, который я ожидаю. К сожалению, в результате QNetworkReply возвращает peerCertificate с пустой подписью.

Документация гласит следующее:

Поскольку сертификат однорангового узла устанавливается на этапе установления связи, доступ к сертификату однорангового узла безопасен из слота, подключенного к сигналу sslErrors() или зашифрованному ().

Если возвращается нулевой сертификат, это может означать, что рукопожатие SSL не выполнено, или это может означать, что хост, к которому вы подключены, не имеет сертификата, или это может означать, что соединение отсутствует.

Таким образом, ошибка может заключаться в том, что соединение уже закрыто. Я не могу использовать QNetworkAccessManager::sslErrors() Сигнал как этот сигнал не будет излучаться при использовании SSL-прокси (это то, что я хочу предотвратить).

Как получить SSL-сертификат Сервера? Возможно, есть еще сигналы, к которым у меня есть доступ и где сертификат еще доступен? Есть ли другой способ получить сертификат?

Обновить:

Теперь я могу получить правильный сертификат, реагируя на QNetworkAccessManager::finished(QNetworkReply*) Сигнал. Но, к сожалению, этот сигнал не отправляется при отправке AJAX-запроса. Для меня обязательно также проверить отпечатки этих запросов. Есть идеи?

0 ответов

Другие вопросы по тегам