Как узнать, какие сертификаты QNetworkAccessManager использует во время рукопожатия SSL / TLS? - PullRequest
0 голосов
/ 05 декабря 2018

Я использую класс QNetworkAccessManager для установления связи HTTPS с удаленным сервером.Связь работает хорошо, но мне нужно будет обновить сертификаты.

Я не очень разбираюсь в SSL и хотел бы уточнить один момент.

Согласно http://doc.qt.io/qt-5/qnetworkaccessmanager.html#encrypted, первоначальное SSL-квитирование работает нормально, потому что следующий слот, подключенный к сигналу QNetworkAccessManager encrypted(QNetworkReply*), называется:

void MyAccessManager::onEncrypted(QNetworkReply *rep)
{
    Q_UNUSED(rep)
    qDebug() << "SSL/TLS handshake success";
}

Это встроенный Linux, в котором уже установлено несколько файлов .crtв /usr/share/ca-certificates/mozilla/ и список .pem файлов в /etc/ssl/certs/

Насколько я понимаю, Qt может найти эти файлы автоматически, потому что когда я получаю QSslConfiguration из QNetworkRequest, я могу видетьсписок QSslCertificate используется, например, с:

QSslConfiguration conf = myNetworkRequest.sslConfiguration();

for (int i = 0; i < conf.caCertificates().size(); i++)
    qDebug() << conf.caCertificates().at(i).subjectInfo(QSslCertificate::Organization);

и у меня есть вывод:

QDEBUG : ("DigiCert Inc")
QDEBUG : ("VeriSign, Inc.")
QDEBUG : ("GlobalSign")
...

Мой вопрос: как можно увидеть, какие из нихсертификаты и файлы, эффективно использовались QSslSocket для этого конкретного соединения?

Спасибо.

...