【问题标题】:Qt5 QWebView how to send client certificate?Qt5 QWebView如何发送客户端证书?
【发布时间】:2026-01-16 14:20:12
【问题描述】:

我使用 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);

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

【问题讨论】:

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


    【解决方案1】:

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

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

    你必须实现 customReadFile()

    【讨论】:

      最近更新 更多