• Qt之Windows Server 2012 R2不支持openssl


            发现默认情况下服务器Windous Server 2012系统不支持openssl,就算你把已经编译好的库编译好放进去也不行,因为系统就缺少了系统的补丁。

            一开始的想的解决办法是:怀疑是因为Windows 10编译的库文件Windous Server 2012系统中不支持,所以先下载openssl的源码,在服务器上重新编译,然后根据编译源码的方法在网上搜索,网上大部分的办法下载编译openssl的源码,编译的具体步骤忘记了,反正首先需要两个工具,perl和nmake,这里可太费事了

            其中perl还好说,nmake还要安装一般都是安装Visual Studio来自带安装,然后Visual Studio安装怎么都安装不好使,总是报错。

            当时脑子真的短路了,这么尝试下去发现终究是弯路,这些一点软用都没有,这些的本质不也是编译->生成库文件,我现在库文件都有了只是在当前系统不支持,何必多走弯路。

    解决办法

            openssl不支持的原因主要就是系统有的补丁没有安装。

            原文链接:windows2012r2安装openssl

            Windows Server 2012 R2 补丁包下载地址:依次安装最后重启即可

            美中不足的地方就是这些库到底起什么作用并没有搞清楚,就是解决了问题而已,Windows这方面的资料还是太少了,在官网搜索也没有得到相应的解释。下次有时间应该还是会重新翻回来看看这些补丁的作用。

            我之前在windows日志报错中,安装过补丁KB2919442和KB2919355,但是结果还是不行,这次下面的全部安装后成功

    1、clearcompressionflag.exe

    https://download.microsoft.com/download/D/B/1/DB1F29FC-316D-481E-B435-1654BA185DCF/clearcompressionflag.exe

    2、KB2919442

    1. 1、http://download.windowsupdate.com/c/msdownload/update/software/crup/2014/02/windows8.1-kb2919442-x64_f97d8290d9d75d96f163095c4cb05e1b9f6986e0.msu
    2. 2、https://download.microsoft.com/download/D/6/0/D60ED3E0-93A5-4505-8F6A-8D0A5DA16C8A/Windows8.1-KB2919442-x64.msu

    3、KB2919355

    http://download.windowsupdate.com/d/msdownload/update/software/crup/2014/02/windows8.1-kb2919355-x64_e6f4da4d33564419065a7370865faacf9b40ff72.msu

    4、KB2932046

    http://download.windowsupdate.com/d/msdownload/update/software/crup/2014/02/windows8.1-kb2932046-x64_6aee5fda6e2a6729d1fbae6eac08693acd70d985.msu

    5、KB2959977

    https://download.microsoft.com/download/9/C/7/9C7A638F-D1E3-40F4-A755-64899A18B411/Windows8.1-KB2959977-x64.msu

     6、KB2937592

    http://download.windowsupdate.com/c/msdownload/update/software/crup/2014/02/windows8.1-kb2937592-x64_4abc0a39c9e500c0fbe9c41282169c92315cafc2.msu
    

    7、KB2938439

    http://download.windowsupdate.com/c/msdownload/update/software/crup/2014/03/windows8.1-kb2938439-x64_3ed1574369e36b11f37af41aa3a875a115a3eac1.msu
    

    8、KB2934018

    https://download.microsoft.com/download/D/B/1/DB1F29FC-316D-481E-B435-1654BA185DCF/Windows8.1-KB2934018-x64.msu
    

    9、dotnet-hosting-6.0.1-win.exe

    https://download.visualstudio.microsoft.com/download/pr/b69fc347-c3c8-49bc-b452-dc89a1efdf7b/ebac64c8271dab3b9b1e87c72ef47374/dotnet-hosting-6.0.1-win.exe

    oepnssl库

    1、先获取当前版本

    输出当前QT支持的openSSL版本

    1.  qDebug()<<"QSslSocket="<<QSslSocket::sslLibraryBuildVersionString();
    2.  //判断系统是否支持OpenSSL
    3.  //如果此平台支持SSL,则返回true; 否则,返回false。 如果平台不支持SSL,则套接字将在连接阶段失败。不支持就需要看下面的解决方法。
    4. qDebug() << "OpenSSL支持情况:" << QSslSocket::supportsSsl();

    我的当前版本是

    QSslSocket= "OpenSSL 1.1.1b  26 Feb 2019"

    所以我等会下载的就会是OpenSSL v1.1.1的版本 

    7.2、下载对应的版本
    openssl下载地址:

    http://slproweb.com/products/Win32OpenSSL.html

            根据自己使用的QT编译器时32位还是64位,对应下载安装包。将下载的安装包进行安装,安装到第二个选项时,选择安装到指定的/bin目录下。安装之后,找到安装目录下的两个文件(其中我的是libcrypto-1_1.dll 和libssl-1_1.dll),拷贝到QT编译器目录下即可。

  • 相关阅读:
    一次性看懂 C/C++ 当中的声明规则 与 const
    Hexo + Butterfly 键入在线聊天功能
    机器学习概述
    一些服务器常见漏洞的修复方法
    信息论学习笔记(一):认识通信系统
    多线程事物造成死锁全面分析
    一文搞懂PKI/CA
    【Linux】线程互斥
    把a文件里面的内容全部给b文件里面去
    [免费专栏] Android安全之Xposed插件开发【从零手把手带】教程
  • 原文地址:https://blog.csdn.net/qq_41399894/article/details/127587093