• linux下编译openssl


    一、问题
    在Qt中使用https,运行时报错:

    qt.network.ssl: QSslSocket: cannot resolve SSLv2_client_method
    1
    二、原因分析
    SSLv2由于某些漏洞导致的不安全原因, 在某些linux发行版里的openssl库禁用掉了SSLv2

    三、解决办法
    重新编译openssl

    1、下载openssl
    git clone https://github.com/openssl/openssl.git
    1
    2、编译
    ./config enable-shared
    make -j4
    1
    2
    3、部署
    将ssl和crypto库拷贝到Qt目录lib下:

    cp libssl.so* libcrypto.so* ~/Qt5.6.3/5.6.3/gcc_64/lib/ -a
    1
    4、新的错误
    重新运行时,报错
    qt.network.ssl: QSslSocket: cannot call unresolved function *

    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
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    四、解决新错误
    参考博客:https://www.cnblogs.com/btian/p/6130560.html
    Qt5.6对openssl版本的要求1.0,而从git上下载的最新版本是1.1的;
    其它Qt的版本对openssl的要求未测试。

    1、查看版本信息
    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-19

    2、导出1.0.2版本
    git checkout -b openssl-1.0.2 origin/OpenSSL_1_0_2-stable

    3、编译
    ./config enable-shared
    make -j4

    4、部署
    cp libssl.so* libcrypto.so* ~/Qt5.6.3/5.6.3/gcc_64/lib/ -a

    重新运行不再报错
    ————————————————
    版权声明:本文为CSDN博主「郭老二」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/u010168781/article/details/85632637

  • 相关阅读:
    Java study 1:The note of studying Socket which based UDP
    关于Meta标签中formatdetection属性及含义
    编辑sass报错:error style.scss (Line 3: Invalid GBK character "\xE5")解决办法
    比较三个 CSS 预处理器:Sass、LESS 和 Stylus(下)
    vue引入bootstrap、jquery
    Something about SeekingJobResume简历
    Something about SeekingJobTelInterview(电话面试)
    此时彼时
    The method getTextContent() is undefined for the type Node
    单例模式实现方式
  • 原文地址:https://www.cnblogs.com/tingtaishou/p/15161062.html
Copyright © 2020-2023  润新知