在QT网络编程中,很多请求都是以HTTP,通过POST/GET方式来完成,简单高效。但是HTTP存在很严重的安全问题,HTTP数据是以明文方式传输,可以很容易被别人监听、抓取到。所以...HTTPS就应运而生了,它的存在就是为了解决HTTP方式传输的不安全问题。本篇文章总结了一个HTTPS加密传输的例子,很有参考意义,谨以此笔记记录下来。
PS: 首先要说明的是,QT是默认使用OpenSSL的。如果JAVA服务器上使用自带JDK生成的自签证书,在低版本的QT中是需要做一步转化工作的。需要将clent.p12文件,转成cert.pem 证书文件和key.pem密钥文件,将tomcat.keystore信任库文件转成tomcat.pem文件,然后再加载这三个文件,才能进行通信,这里坑了我许久。
在QT 5.1x 版本之后,是可以直接加载JDK 生成的自签证书clent.p12 文件的,本文是以直接加载clent.p12为例,讲解如何使用QT客户端与JAVA服务器进行通信。准备工作:将ssleay32.dll libeay32.dll运行库和client.p12证书文件与.exe运行文件放在同一目录下。
设置证书、网络配置及发送请求://声明一个 QNetworkAccessManager 对象
QNetworkAccessManager *m_accessManager_Registered;
m_accessManager_Registered = new QNetworkAccessManager(this); //实例化一个对象
//设置连接槽
QObject::connect(m_accessManager_Registered, SIGNAL(finished(QNetworkReply*)), this, SLOT(finishedSlot_Registered(QNetworkReply*)));
//用户登陆验证;
void Widget::on_loginBt_clicked()
{
user_name = ui->userName->text();
user_passwd = ui->pa