我使用Qt5的QWebView加载一个https网站,需要客户端证书。我安装了客户端证书,用chrome和ie浏览器测试ok。但它在 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);
我打印了正确的证书主题信息。 我从谷歌搜索一些信息。有人说我必须设置私钥,有人没有设置,但也能正常工作。怎么运行的?而且我认为我使用 chrome 浏览器访问该网站,它工作正常,但 chrome 不会知道私钥,所以我认为没有必要设置私钥。 有谁知道该怎么做?这个问题折磨了我好久!
最佳答案
我认为要加载您必须添加到代码中的私钥:
QByteArray keyData = customReadFile("/path/to/privatekey/PEM");
QSslKey sslPrivateKey(keyData, QSsl::Rsa, QSsl::Pem, QSsl::PrivateKey, "PRIVATE KEY PASS");
conf.setPrivateKey(sslPrivateKey);
你必须实现 customReadFile()
关于Qt5 QWebView如何发送客户端证书?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20878650/