我在Godaddy上购买了证书。 从他们那里,我得到了三个文件:certificate.crt,certificatechain.crt,private.key证书链的根证书是自签名的,不可信的
我有一个QT应用程序与SSL通信到运行Flask的Ubuntu服务器。
该网站正在运行并在https上运行。
我在Apache方面没有任何问题,但在这里我如何使用证书。
在/etc/apache2/site-enabled/MyFlaskApp.conf
SSLEngine on
SSLCertificateFile /etc/ssl/certificate.crt
SSLCertificateKeyFile /etc/ssl/private.key
SSLCertificateChainFile /etc/ssl/certificatechain.crt
在QT:
void InitSSL()
{
m_sslConfiguration.setProtocol(QSsl::TlsV1_2);
// Set certificate to configuration
QFile certFile;
certFile.setFileName(path_certificate);
if(certFile.open(QIODevice::ReadOnly))
{
QList<QSslCertificate> certificates;
QSslCertificate certificate(&certFile, QSsl::Der);
certificates.append(certificate);
m_sslConfiguration.setCaCertificates(certificates);
}
QFile certChain;
certChain.setFileName(path_certificate_chain);
if(certChain.open(QIODevice::ReadOnly))
{
QList<QSslCertificate> certificates;
QSslCertificate certificate(&certChain, QSsl::Der);
certificates.append(certificate);
m_sslConfiguration.setLocalCertificateChain(certificates);
}
QFile keyFile;
keyFile.setFileName(DATABASE_PATH + DATABASE_KEY_PATH_SSL);
if(keyFile.open(QIODevice::ReadOnly))
{
QSslKey key= QSslKey(keyFile.readAll(), QSsl::Rsa);
m_sslConfiguration.setPrivateKey(key);
}
}
我总是得到一个SSL错误的说法,该证书链的根证书自签名,不可信“
这是不是自签名,我在GoDaddy上购买了证书
另外,让我知道如果QT应用程序在Windows或Ubuntu上运行会产生什么差异。
谢谢
你指出它问“你想达到什么?”。我有点困惑。我在Apache服务器上设置了.crt和.key。我的网站在https://上运行。客户端(QT)需要什么来验证接收到的.crt是否可信?当我只使用“m_sslConf.setProtocol(QSsl :: TlsV1_2);”时,我通过SSL正确地将文件传输到服务器,但它是否安全?我不明白如何在QT中正确设置我的SSL连接,以便验证收到的.crt文件。 – vincedjango
@vincedjango“客户端(QT)需要什么来验证收到的.crt是否可信?”没有。 Qt使用OpenSSL,并附带它自己的一组可信任证书。如果您的服务器设置正确,它应该直接开箱即用:Qt应该拒绝与不可信证书的服务器的连接。来自CA根的信任链由服务器连同服务器证书发出的证书链建立。当您通过网络浏览器连接到服务器时,确保事情正常工作。 –