在 ssl单向证书和双向证书校验测试及搭建流程 文章中,已经做了基于https的单向认证和双向认证,,,
在进行双向认证时,采用的是curl工具或浏览器充当客户端去验证。
此次采用QT提供的接口去开发客户端向服务器发送请求,来验证https的双向认证流程。

1、准备

依然以 ssl单向证书和双向证书校验测试及搭建流程 该文章作为前提条件进行开发。

开发环境:
客户端:Win10-64 + Qt5.13-MingW.32
服务端:Linux + openssl-1.1.1.f + nginx/1.18.0

2、分析

实际上在上文所指向的文章中,我们通过curl命令行来作为客户端向服务器发起了基于https的双向认证。见下图。

在这里指定了客户端私钥和客户端的证书。。。
再次回顾用浏览器充当客户端去进行https的双向认证,在那里我们事先导入了客户端的p12证书,p12证书实际上是客户端crt证书和客户端私钥key的结合体。

综上所述,两种方法中有一个共性,就是发送时都需要客户端的证书和私钥。。
双向校验时,肯定是要携带客户端的证书给服务器的。。。。
那么自然的,在QT中也要按照此套路开发(发送请求时携带证书与私钥),,,QT也提供了相应的接口。

2、核心代码

void MainWindow::testSsl()
{// 加载客户端证书QFile crtFile("C:\\Users\\XingWei\\Documents\\untitled42\\client.crt");crtFile.open(QIODevice::ReadOnly);QSslCertificate certificate(&crtFile, QSsl::Pem);crtFile.close();// 加载客户端私钥QByteArray passPhrase("123456");  // 私钥的密码QFile keyFile("C:\\Users\\XingWei\\Documents\\untitled42\\client.key");keyFile.open(QIODevice::ReadOnly);QSslKey privateKey(&keyFile, QSsl::Rsa, QSsl::Pem, QSsl::PrivateKey, passPhrase);keyFile.close();// ssl配置QSslConfiguration conf;conf.setPeerVerifyMode(QSslSocket::QueryPeer);conf.setProtocol(QSsl::TlsV1SslV3);conf.setPrivateKey(privateKey);conf.setLocalCertificate(certificate);QNetworkRequest request;request.setUrl(QUrl("https://50.50.1.118"));request.setSslConfiguration(conf);QEventLoop loop;QNetworkReply* reply = m_manager.get(request);connect(reply, &QNetworkReply::finished, &loop, &QEventLoop::quit);connect(reply, &QNetworkReply::finished, this, [=] {qDebug() << "####################### get data finished...";QByteArray data = reply->readAll();qDebug() << data;});loop.exec();qDebug() << "#############> " << reply->errorString() << reply->error();
}

3、运行及抓包分析

通过抓包,可以明显的看出,客户端和服务器各自向彼此发送了各自的证书。。
同时,服务器也正常响应客户端了。。

QT充当客户端模拟浏览器等第三方客户端对https进行双向验证相关推荐

  1. telnet客户端模拟浏览器发送请求

    telnet 客户端 telnet客户端能够发出请求去连接服务器(模拟浏览器) 使用telnet之前,需要开启telnet客户端 1.进入控制面板 2.进入程序和功能,选择打开或关闭windows功能 ...

  2. 如果使用 Python3(Flask) 一步一步模拟一个网页微信客户端

    目录 Web Weixin Pipeline 一.获取登录的二维码 1.1.打开浏览器输入下面网址 1.2.梳理原理 1.3.代码实现 1.4.启动测试 二.扫码成功 2.1.扫码状态 2.2.原理状 ...

  3. 基于node.js的ws模块和net模块实现的浏览器与tcp客户端实时通讯小例程

    适用于物联网设备的接入,网页端实时监控终端数据的场景 项目运行 测试通讯 功能描述 项目运行 项目地址:tcp-ws 下载之后进入文件夹,控制台执行npm install安装依赖包. 安装完毕后npm ...

  4. 为什么越来越多的手机浏览器转型新闻客户端?

    ▍PMCAFF产品经理社区的咖友提问:为什么越来越多的手机浏览器转型新闻客户端? ● ● ● ▍  YDong   某大数据公司 产品经理 我从用户和生产商两个角度来谈谈. >>>& ...

  5. JAVA客户端数据传输_java模拟TCP通信实现客户端上传文件到服务器端

    java模拟TCP通信实现客户端上传文件到服务器端,供大家参考,具体内容如下 客户端 package com.zr; import java.io.FileInputStream; import ja ...

  6. mysql 终端模拟_mysql客户端模拟脏读、幻读和可重复读

    如果操作一下时报出错误:在数据库中执行 SET GLOBAL BINLOG_FORMAT = mixed; 执行后可通过SELECT * FROM information_schema.GLOBAL_ ...

  7. 第三方浏览器h5 android测试,H5案例分享:使用JS判断客户端、浏览器、操作系统类型...

    使用JS判断客户端.浏览器.操作系统类型 一.JS判断客户端类型 JS判断客户端是否是iOS或者Android手机移动端 通过判断浏览器的userAgent,用正则来判断手机是否是ios和Androi ...

  8. Qt Qml 开发超高清视频回放监控客户端

    Qt Qml 开发超高清视频回放监控客户端 1.写在前面 之前一篇写了如何实现实时视频播放,而回放视频从原理上来讲其实差不多. 不同的是回放多了跳转.倍速.下载等等功能. 因此我们需要一个提供视频录像 ...

  9. QT -- TcpSocket实例,使用Qt中的tcp通信协议,构建客户端和服务端,实现局域网通信软件功能

    Qt中使用Tcp构建通信客户端实现聊天信息发送连接等 1.简介 2.项目创建和界面构建 1)流程图 2)项目构建 3)界面构建 3.代码设计 1)项目pro添加 2)客户端设计 a. clientwi ...

最新文章

  1. 中方控股的Arm合资公司开始运营,还要在国内IPO
  2. VC++设置Release模式下允许调试代码
  3. C++14尝鲜:Generic Lambdas(泛型lambda)
  4. tf torch keras 数据增强 data augmentation
  5. Apache+Openssl
  6. C/C++中容易造成内存溢出的函数
  7. c语言关于链表选择题看不懂,有关链表基本操作三题
  8. 产品经理学习总结(1)——人人都是产品经理之需求文档语法
  9. Hibernate many-to-many
  10. 关于如何在Android、Java等非微软平台上建立高信任的SharePoint应用程序
  11. spark sql python_Spark 3.0开发近两年终于发布,流、Python、SQL重大更新详解
  12. 基于SpringBoot实现在线抽奖系统
  13. 火狐浏览器插件学习01
  14. SG90系列 MG系列马达
  15. SRS RTC NACK源码分析—1
  16. 登录谷歌账号出现浏览器不安全的提示
  17. html做坦克大战的效果,HTML5实现坦克大战(一)
  18. 玩转OpenCV之一:关于OpenCV学习版本的选择
  19. 4.13 使用扇贝工具制作猥琐的老鼠 [Illustrator CC教程]
  20. [数论 斐波那契] 51nod1355. 斐波那契的最小公倍数

热门文章

  1. 【Visual Studio 2022】VS2022安装教程
  2. 浙大计算机学院硕士招生专业,择校指南 | 浙江大学2020届研究生招生专业目录...
  3. 公司企业怎么做一个网站?
  4. jsconfig.json 在ts跟js混合的项目失效
  5. 微信小程序入门2-创建一个微信小程序
  6. Java高并发 - JUC
  7. CAN总线数据记录仪在重型运输车辆中的应用
  8. 内网安全管理软件(内网安全管理软件的功能)
  9. linux 7 network fail,centOS 7下无法启动网络(service network start)错误解决办法
  10. ssm框架用html视图,ssm框架是前端还是后端技术分享