我正在使用类QNetworkAccessManager
与远程服务器建立HTTPS连接。连接效果很好,但是我最终需要更新证书。
我对SSL不太了解,我想澄清一点。
根据http://doc.qt.io/qt-5/qnetworkaccessmanager.html#encrypted,由于以下连接到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
对此特定连接有效使用了哪些证书和文件?
谢谢。