如何从QNetworkAccessManager和QNetworkRequest获取服务器QSslCertificate?

时间:2014-06-05 18:59:07

标签: c++ qt qt4 connection qtnetwork

我通过QNetworkAccessManager::createRequest(Operation, QNetworkRequest, outgoingData)发送请求。我需要验证SSL证书的指纹是否符合我的预期。很遗憾,生成的QNetworkReply会返回带有空签名的peerCertificate

文档说明如下:

  

由于在握手阶段设置了对等证书,因此可以安全地从连接到sslErrors()信号或encrypted()信号的插槽访问对等证书。

     

如果返回空证书,则表示SSL握手失败,或者表示您连接的主机没有证书,或者表示没有连接。

因此错误可能是连接已经关闭。我无法使用QNetworkAccessManager::sslErrors()信号,因为使用SSL代理时不会发出此信号(这是我想要阻止的)。

如何获取服务器的SSL证书?是否有更多可以访问的信号以及证书仍然可用的位置?是否有其他方式可以获得证书?

更新

现在我可以通过对QNetworkAccessManager::finished(QNetworkReply*)信号作出反应来接收正确的证书。 很遗憾,发送AJAX-Request时不会发出此信号。对我来说,必须检查这些请求的指纹。任何想法?

0 个答案:

没有答案