qt 嵌入web页面_Qt嵌入浏览器(三)——QWebEngine与Https

本篇简介:

本篇的小目标:

挑战通过Qt WebEngine实现与服务端的Https双向认证

双向认证,Qt WebEngine和Chromium

这里先说结论:挑战失败了。至少使用Qt WebEngine目前已实现的组件没有办法直接实现双向认证。

先来简要分析一下实现双向认证需要做些什么。首先,服务端和客户端——客户端也就是我们的定制浏览器——各自需要向对方提供自己的安全证书,并检查对方所提供的安全证书是否在自己的信任库中。Qt提供了设置这样的安全环境的组件QSslConfiguration,普通的加密通信如果要实现双向认证,可以很方便地使用这个组件完成客户端证书和信任库的设置(具体可以参考我的另一篇文章:QSslSocket双向认证设置)。

然而比较坑的地方是,就目前的5.10版而言,Qt WebEngine并不能直接载入QSslConfiguration里的设置。因为使用了Chromium作为内核,WebEngine在加载页面时走的是Chromium自己的一条网络栈,并没使用Qt的安全环境设置。而Chromium在处理Https请求时,默认是直接读取操作系统中设置的证书作为客户端自己的安全证书,现有版本的WebEngine对此没有进行更改。更坑的地方是,Chromium本身是提供了选择客户端证书的接口的,在使用Chrome浏览器第一次访问需要认证客户端的https页面时,会弹出一个选择客户端证书的框,如下图所示:

certselect.png

而WebEngine似乎会直接略过客户端证书的加载。这个bug已经被提交到了官方,已经有相应的补丁出炉,但是要整合到

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值