我使用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不知道私钥,所以我认为没有必要设置私钥。 有谁知道怎么办?这个问题非常折磨我了!
答案 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()