Qt应用程序如何确定它使用哪个openssl库?

时间:2019-06-08 11:04:59

标签: bash openssl qt5 ubuntu-16.04

我在Ubuntu 16.04上运行Qt5.3.0-rc,并在/ usr / bin中安装了OpenSsl 1.0.2g。 我已经下载了最新的OpenSsl 1.1.1c源码,进行了构建并将其安装在/ usr / local / bin

which openssl返回/ usr / local / bin一个

但是,当我从相同的终端窗口启动Qt应用程序时,它似乎仍返回1.0.2g的密码列表

运行strace ./quicksecureclient 2>&1 | grep '^open(".*\.so"' | grep -i ssl时,似乎没有ssl lib被加载。

所以我认为我的第一个问题是:“ Qt应用程序如何确定它使用的openssl库?”

以下Qt程序仅列出4个PSK密码(由/usr/bin/openssl ciphers -v 'ALL:eNULL' | grep PSK返回),而1.1.1 openssl返回60个项目

#include <QCoreApplication>

#include <QSslCipher>
#include <QSslConfiguration>
#include <QDebug>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    auto configuration = QSslConfiguration::defaultDtlsConfiguration();
    QList<QSslCipher> all_ciphers;
    all_ciphers = configuration.supportedCiphers();
    for(int i=0;i<all_ciphers.length();i++){
        if(all_ciphers[i].name().contains("PSK"))
                qDebug() << "Cipher " << all_ciphers[i].name();
    }
    qDebug() << "Ciphers: " << all_ciphers.length();
    return a.exec();
}

Edit1 我认为它是硬编码的(在配置/构建Qt5时定义):QSslSocket::sslLibraryBuildVersionString()打印出“ OpenSSL 1.0.2k-fips,2017年1月26日”。
鉴于1.0 1nd 1.1之间的不兼容(如@LorinczyZsigmond指出的那样),我目前认为,如果不从代码中重建Qt,则无法将OpenSSL 1.1与Qt5一起使用

0 个答案:

没有答案