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

标签 qt visual-c++ ssl https certificate

我使用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/

相关文章:

c++ - qt/c++ 上下文菜单 - 禁用一个项目

visual-c++ - fatal error LNK1179 : invalid or corrupt file: duplicate COMDAT '_IID_IXMLDOMImplementation'

c - 如何解决冲突的链接器依赖项?

c++ - Qt:如何设置 QVBoxlayout 的最大宽度

c++ - 为什么可以连接到未声明为 Q_SLOTS 的函数?

c++ - 在 C++ 中使用文本文件进行身份验证

apache - 如何引导我网站上的所有文件夹在 .htaccess 中使用 HTTPS?

python - pip 安装 Django

java - 如何配置 TLS 连接以保护它们免受异常攻击 (CVE 2015-0204)?

c++ - OpenCV C++ 不会在 VideoCapture 下的 Ubuntu 16.04 上加载任何视频