Qt文档阅读笔记|Qt实践| HTTPS知识点-获取某站点SSL证书
生活随笔
收集整理的這篇文章主要介紹了
Qt文档阅读笔记|Qt实践| HTTPS知识点-获取某站点SSL证书
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目錄
?
基本概念
代碼與實例
?
基本概念
這里要先介紹幾個類和函數
首先是QSslSocket:這個類提供了客戶端和服務器之間的SSL加密socket連接。這個是基于TCP連接,可以傳輸加密數據,支持的協議有SSL3和TLS1.2。
通過兩種方式建立安全連接,一種是使用即使的SSL握手,一個是延遲SLL握手。
在Qt中只要調用connectToHostEncrypted就可以建立一個安全的連接!
官方代碼如下:
QSslSocket *socket = new QSslSocket(this);connect(socket, SIGNAL(encrypted()), this, SLOT(ready()));socket->connectToHostEncrypted("imap.example.com", 993);下面再介紹一個類:QSslCipher
QSslCipher:是SSL的加密密碼,通常是調用QSslSocket中的sessionCipher這個函數可以得到。
下面最后介紹一個類:QSslCertificate
顧名思義獲取X509證書的API。
?
?
代碼與實例
以百度為例!
程序運行截圖如下:
下面來看看百度的證書
程序源碼如下:
#include <QCoreApplication> #include <QSslSocket> #include <QObject> #include <QSslCipher> #include <QSslCertificate> #include <QList> #include <QDebug> #include <QEventLoop>int main(int argc, char *argv[]) {QCoreApplication a(argc, argv);QSslSocket *socket = new QSslSocket;socket->connectToHostEncrypted("www.baidu.com", 443);QEventLoop loop;QObject::connect(socket, SIGNAL(encrypted()), &loop, SLOT(quit()));loop.exec();//會話的套接字密碼qDebug() << "套接字密碼:↓";QSslCipher ciph = socket->sessionCipher();if(ciph.isNull()){qDebug() << "沒有設置套接字密碼,溜了!";return 0;}qDebug() << QString("%1, %2 (%3/%4)").arg(ciph.authenticationMethod()).arg(ciph.name()).arg(ciph.usedBits()).arg(ciph.supportedBits());//獲取認證信息qDebug() << "認證信息:↓";const QList<QSslCertificate> chainList = socket->peerCertificateChain();for(int i = 0; i < chainList.size(); i++){qDebug() << QString("%1%2 (%3)").arg(!i ? QString() : ("Issued by: ")).arg(chainList[i].subjectInfo(QSslCertificate::Organization).join(QLatin1Char(' '))).arg(chainList[i].subjectInfo(QSslCertificate::CommonName).join(QLatin1Char(' ')));qDebug() << "--------華麗的分割線--------";}qDebug() << "over";delete socket;return a.exec(); }?
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的Qt文档阅读笔记|Qt实践| HTTPS知识点-获取某站点SSL证书的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java笔记-使用RabbitMQ的Ja
- 下一篇: QML笔记-对QML中信号与槽的基本认识