如何知道QNetworkAccessManager在SSL / TLS握手期间使用哪些证书?

时间:2018-12-05 11:44:43

标签: c++ qt ssl embedded-linux

我正在使用类QNetworkAccessManager与远程服务器建立HTTPS连接。连接效果很好,但是我最终需要更新证书。

我对SSL不太了解,我想澄清一点。

根据http://doc.qt.io/qt-5/qnetworkaccessmanager.html#encrypted,由于以下连接到QNetworkAccessManager信号encrypted(QNetworkReply*)的插槽被称为:

,因此初始SSL握手似乎工作良好
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对此特定连接有效使用了哪些证书和文件?

谢谢。

0 个答案:

没有答案