Qt5 QWebView如何发送客户端证书?

时间:2014-01-02 07:56:06

标签: qt visual-c++ ssl https certificate

我使用Qt5的QWebView加载需要客户端证书的https网站。我已经安装了客户端证书并使用了chrome和ie浏览器进行测试。但它在QWebView中不起作用。

QNetworkRequest request;
request.setUrl(QUrl("https://mysite.com/default2.aspx"));

QSslConfiguration conf = request.sslConfiguration();
//get the client certificate
QByteArray certData = getCertInWindowsMyStore(); 
QSslCertificate sslCert(certData, QSsl::Der);
conf.setLocalCertificate(sslCert);

request.setSslConfiguration(conf);

ui->webView->load(request);

我打印certicate的subjectinfo是正确的。 我从谷歌搜索一些信息。有人说我必须设置私钥,有人没有设置,它也可以正常工作。这个怎么运作?我认为我使用chrome浏览器访问该网站,它工作正常,但chrome不知道私钥,所以我认为没有必要设置私钥。 有谁知道怎么办?这个问题非常折磨我了!

1 个答案:

答案 0 :(得分:0)

我认为要加载您必须添加到代码中的私钥:

 QByteArray keyData = customReadFile("/path/to/privatekey/PEM");
 QSslKey sslPrivateKey(keyData, QSsl::Rsa, QSsl::Pem, QSsl::PrivateKey, "PRIVATE KEY PASS");
 conf.setPrivateKey(sslPrivateKey);

您必须实现customReadFile()