qt qsslsocket linux,【Qt】Qt中使用ssl时报错:qt.network.ssl: QSslSocket: cannot resolve SSLv2_client_method...

在Qt环境中遇到使用HTTPS时的错误,由于SSLv2不安全被禁用。通过重新编译openssl解决此问题,首先从github下载openssl源码,然后配置并编译为共享库,将新编译的libssl.so*和libcrypto.so*替换到Qt的lib目录下。然而,这导致了新的错误,原因是Qt5.6需要openssl1.0,而新下载的是1.1版本。因此,切换到openssl1.0.2版本进行编译和部署,最终成功解决了所有问题,应用程序可以正常运行HTTPS连接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、问题

在Qt中使用https,运行时报错:html

qt.network.ssl: QSslSocket: cannot resolve SSLv2_client_method

2、缘由分析

SSLv2因为某些漏洞致使的不安全缘由, 在某些linux发行版里的openssl库禁用掉了SSLv2linux

3、解决办法

从新编译opensslgit

一、下载openssl

git clone https://github.com/openssl/openssl.git

二、编译

./config enable-shared

make -j4

三、部署

将ssl和crypto库拷贝到Qt目录lib下:github

cp libssl.so* libcrypto.so* ~/Qt5.6.3/5.6.3/gcc_64/lib/ -a

四、新的错误

从新运行时,报错

qt.network.ssl: QSslSocket: cannot call unresolved function *web

qt.network.ssl: QSslSocket: cannot resolve CRYPTO_num_locks

qt.network.ssl: QSslSocket: cannot resolve CRYPTO_set_id_callback

qt.network.ssl: QSslSocket: cannot resolve CRYPTO_set_locking_callback

qt.network.ssl: QSslSocket: cannot resolve ERR_free_strings

qt.network.ssl: QSslSocket: cannot resolve EVP_CIPHER_CTX_cleanup

qt.network.ssl: QSslSocket: cannot resolve EVP_CIPHER_CTX_init

qt.network.ssl: QSslSocket: cannot resolve sk_new_null

qt.network.ssl: QSslSocket: cannot resolve sk_push

qt.network.ssl: QSslSocket: cannot resolve sk_free

qt.network.ssl: QSslSocket: cannot resolve sk_num

qt.network.ssl: QSslSocket: cannot resolve sk_pop_free

qt.network.ssl: QSslSocket: cannot resolve sk_value

qt.network.ssl: QSslSocket: cannot resolve SSL_library_init

qt.network.ssl: QSslSocket: cannot resolve SSL_load_error_strings

qt.network.ssl: QSslSocket: cannot resolve SSL_get_ex_new_index

qt.network.ssl: QSslSocket: cannot resolve SSLv2_client_method

qt.network.ssl: QSslSocket: cannot resolve SSLv3_client_method

qt.network.ssl: QSslSocket: cannot resolve SSLv23_client_method

qt.network.ssl: QSslSocket: cannot resolve SSLv2_server_method

qt.network.ssl: QSslSocket: cannot resolve SSLv3_server_method

qt.network.ssl: QSslSocket: cannot resolve SSLv23_server_method

qt.network.ssl: QSslSocket: cannot resolve X509_STORE_CTX_get_chain

qt.network.ssl: QSslSocket: cannot resolve OPENSSL_add_all_algorithms_noconf

qt.network.ssl: QSslSocket: cannot resolve OPENSSL_add_all_algorithms_conf

qt.network.ssl: QSslSocket: cannot resolve SSLeay

qt.network.ssl: QSslSocket: cannot resolve SSLeay_version

qt.network.ssl: QSslSocket: cannot call unresolved function CRYPTO_num_locks

qt.network.ssl: QSslSocket: cannot call unresolved function CRYPTO_set_id_callback

qt.network.ssl: QSslSocket: cannot call unresolved function CRYPTO_set_locking_callback

qt.network.ssl: QSslSocket: cannot call unresolved function SSL_library_init

qt.network.ssl: QSslSocket: cannot call unresolved function SSLv23_client_method

qt.network.ssl: QSslSocket: cannot call unresolved function sk_num

qt.network.ssl: QSslSocket: cannot call unresolved function SSLeay

qt.network.ssl: QSslSocket: cannot call unresolved function SSLeay

qt.network.ssl: QSslSocket: cannot call unresolved function SSLeay

qt.network.ssl: QSslSocket: cannot call unresolved function SSLeay

4、解决新错误

参考博客:https://www.cnblogs.com/btian/p/6130560.html

Qt5.6对openssl版本的要求1.0,而从git上下载的最新版本是1.1的;

其它Qt的版本对openssl的要求未测试。安全

一、查看版本信息

git branch -r

origin/HEAD -> origin/master

origin/OpenSSL-engine-0_9_6-stable

origin/OpenSSL-fips-0_9_7-stable

origin/OpenSSL-fips-0_9_8-stable

origin/OpenSSL-fips-1_2-stable

origin/OpenSSL-fips-2_0-dev

origin/OpenSSL-fips-2_0-stable

origin/OpenSSL-fips2-0_9_7-stable

origin/OpenSSL_0_9_6-stable

origin/OpenSSL_0_9_7-stable

origin/OpenSSL_0_9_8-stable

origin/OpenSSL_0_9_8fg-stable

origin/OpenSSL_1_0_0-stable

origin/OpenSSL_1_0_1-stable

origin/OpenSSL_1_0_2-stable

origin/OpenSSL_1_1_0-stable

origin/OpenSSL_1_1_1-stable

origin/SSLeay

origin/master

origin/tls1.3-draft-18

origin/tls1.3-draft-19svg

二、导出1.0.2版本

git checkout -b openssl-1.0.2 origin/OpenSSL_1_0_2-stable测试

三、编译

./config enable-shared

make -j4.net

四、部署

cp libssl.so* libcrypto.so* ~/Qt5.6.3/5.6.3/gcc_64/lib/ -acode

从新运行再也不报错

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值