Qt 与java服务器的双向认证https通信
来源:互联网 发布:淘宝普贤菩萨和田玉 编辑:程序博客网 时间:2024/05/22 05:33
第一次做qt和java服务端的https双向认证通信,感觉啥都一头雾水最终还是在强大的搜索引擎和好友的帮助下完成,现在做个一个简单的总结:(有可能有些概念描述不正确)
qt 环境 centos6.5 + qt5.5.1
1.java服务端给我丢过来两个证书相关的文件 client1.p12(包含证书和私钥),client1.truststore (包含信任库),首先必须要说明一下这个两个文件
client1.p12 就是传说中的pkcs12格式
client1.truststore 就是java自己存贮的keystore格式jsk
2.qt如何使用这两个文件
首先由于client1.truststore 是java存贮格式肯定在qt上是不能直接使用(qt内部使用openssl)需要将它转换成标准格式pkcs12
这里需要安装jdk,安装完jdk后切换到证书所在目录:
运行以下命令:
JKS → P12
keytool -importkeystore -srckeystore client1.truststore -srcstoretype JKS -deststoretype Der -destkeystore truststore .p12
这样将会在当前目录生成truststore .p12 信任库
接下来由于qt只能加载pem和Der格式的证书 (貌似也可以加载pkcs12的但是我没有弄成功 在加载 信任库的时候程序崩掉了)
安装openssl
提取用户证书:
openssl pkcs12 -in client1.p12 -clcerts -nokeys -out cert.pem //pem格式
提取私钥:
openssl pkcs12 -in client1.p12 -nocerts -out key.pem
转换信任库为pem格式
openssl pkcs12 -in truststore.p12 -out truststore.pem
到此准备工作结束
现在可使用了 将转换后的文件放到应用程序所在文件夹
加载客户端证书
QFile file.setFileName("./cert.pem");
file.open(QIODevice::ReadOnly);\
QSslCertificate local( &file , QSsl::Pem );
m_sslConfig.setLocalCertificate( local );
file.close();
加载私钥
file.setFileName( "./certificate/key.pem");
file.open(QIODevice::ReadOnly);
QSslKey key( &file, QSsl::Rsa, QSsl::Pem,QSsl::PrivateKey,QByteArray("123456"));
m_sslConfig.setPrivateKey( key );
file.close();
加载信任库
file.setFileName("./truststore.pem");
file.open(QIODevice::ReadOnly);
QList<QSslCertificate> list = QSslCertificate::fromDevice( &file, QSsl::Pem);
file.close();
m_sslConfig.setCaCertificates( list );
到此设置结束 以后在发送 QNetworkRequest request;时候只需要将ssl配置设置进去就可以了
- Qt 与java服务器的双向认证https通信
- 基于java的https双向认证(android)
- https的双向认证
- HTTPS双向认证、UIWebView的双向认证
- Java nginx https 双向认证
- java https双向认证实现
- java实现https双向认证
- https单向认证与双向认证
- Https单向认证与双向认证
- HTTPS的SSL双向认证
- https双向认证的问题
- 利用tomcat服务器配置https双向认证
- 利用tomcat服务器配置https双向认证
- tomcat 服务器配置 https 双向认证
- tomcat 服务器配置 https 双向认证
- Tomcat服务器配置https双向认证
- Java https服务器认证问题的解决方法
- 基于java的https双向认证,android上亦可用
- datatables 初始全量加载数据
- PHP中date函数月和日带0问题
- 事件默认行为
- Animation,Animator学习
- ProtocolBuffer学习入门
- Qt 与java服务器的双向认证https通信
- 数据库阿里连接池 druid配置详解
- python结巴分词器的使用说明
- V4L2应用程序框架
- 进阶路线图
- Eclipse发布web项目不成功的原因
- 面试技巧
- ArcGIS API For JavaScript——空间查询(QueryTask)
- Fabric智能合约编译与测试环境搭建