基于Windows手动编译openssl和直接安装openssl

零、环境

win10-64位 + VS2019

一、手动编译

前言:对于一般的开发人员而言,在 openssl 上下载已经编译好的 openssl 库,然后直接拿去用即可,,不用手动编译,{见下文直接安装}。。。对于一些开发人员,可能需要修改openssl源码,那么编译它势在必行。。。

1、安装perl

https://platform.activestate.com/ActiveState-Projects/ActiveState-Perl-5.36.0

基于Windows手动编译openssl和直接安装openssl_第1张图片

两种方法都没能成功。。第一种下载后会得到一个 state-remote-installer.exe,然后安装时会在命令行中执行,,命令行中输入Y会继续下载,,,下载极慢,,放弃。。
第二种执行命令直接报错如下所示。
基于Windows手动编译openssl和直接安装openssl_第2张图片
总的来说,通过官网给定的方式去倒腾,都不好搞。。。
于是,走第三方去下载,,http://www.xz7.com/downinfo/43699.html

下载速度非常之快。。
安装完毕后,会自动添加至环境变量。
此时打开cmd,输入 perl -v,输出如下,表示安装成功。
基于Windows手动编译openssl和直接安装openssl_第3张图片

2、 下载安装nasm
https://www.nasm.us/
基于Windows手动编译openssl和直接安装openssl_第4张图片
基于Windows手动编译openssl和直接安装openssl_第5张图片

此处下载2.16.01稳定版本。
安装完毕,将安装目录添加至系统环境变量中,输入nasm -v,输出以下表示安装成功。

在这里插入图片描述

3、下载安装openssl
openssl官网
基于Windows手动编译openssl和直接安装openssl_第6张图片
此处下载1.1.1b.tar.gz版本。

4、开始编译
以管理员身份运行vs2019-64bit命令行工具,因为此处要编译成64位的库。
然后切换到解压后的目录中。
基于Windows手动编译openssl和直接安装openssl_第7张图片

perl Configure VC-WIN64A  --prefix=D:\openssl111b\openssl-1.1.1b\bin

注意 ,–prefix必须为绝对路径, 否则报错。
开始执行命令,结果报错如下:

D:\openssl111b\openssl-1.1.1b>perl Configure VC-WIN64A  --prefix=D:\openssl111b\openssl-1.1.1b\bin
Configuring OpenSSL version 1.1.1b (0x1010102fL) for VC-WIN64A
Using os-specific seed configuration
Can't locate Win32/Console.pm in @INC (you may need to install the Win32::Console module) (@INC contains: D:/openssl111b/openssl-1.1.1b/util/perl D:/openssl111b/perlInstall/site/lib D:/openssl111b/perlInstall/lib) at D:/openssl111b/perlInstall/site/lib/ActivePerl/Config.pm line 400.
Compilation failed in require at D:/openssl111b/perlInstall/site/lib/ExtUtils/MakeMaker.pm line 9.
BEGIN failed--compilation aborted at D:/openssl111b/perlInstall/site/lib/ExtUtils/MakeMaker.pm line 9.
Compilation failed in require at D:/openssl111b/perlInstall/site/lib/IPC/Cmd.pm line 235.

需要修改perl安装目录下的文件。
D:/openssl111b/perlInstall/site/lib/ActivePerl/Config.pm
ps:若不知道自己的安装位置,可借助Everything进行全局搜索。。。
基于Windows手动编译openssl和直接安装openssl_第8张图片

找到后修改此文件,注释395-413行左右的代码,如下所示:
基于Windows手动编译openssl和直接安装openssl_第9张图片
此时再次执行上述命令,openssl的配置已经结束,makefile已经生成,如下所示。
基于Windows手动编译openssl和直接安装openssl_第10张图片
然后执行 nmake ,等待编译完成,,,
紧接着执行name install,此时将安装到之前配置时指定的bin目录,,,
安装完毕,去bin目录查看安装后的及结果。。。,如下所示,已经分门别类的安装好了。。。

基于Windows手动编译openssl和直接安装openssl_第11张图片

二、直接安装

现在直接下载openssl的exe版本,版本号是:Win64 OpenSSL v1.1.1v Light
https://slproweb.com/products/Win32OpenSSL.html

基于Windows手动编译openssl和直接安装openssl_第12张图片
基于Windows手动编译openssl和直接安装openssl_第13张图片
安装中会有以下提示,默认即可。
基于Windows手动编译openssl和直接安装openssl_第14张图片
实际我最关心的就是这两个库了。因为https建立连接的时候需要用到它。

三、顺便解决一个Qt报错

程序中会访问https://50.50.1.118服务。采用https协议,需要openssl支持。。
编译套件是:Qt5.13-MSVC2017-64bit。

    qDebug() << QSslSocket::supportsSsl();
    qDebug()<<"QSslSocket="<<QSslSocket::sslLibraryBuildVersionString();

基于Windows手动编译openssl和直接安装openssl_第15张图片
报错:qt.network.ssl: QSslSocket::connectToHostEncrypted: TLS initialization failed。
很明显,此时并不支持ssl,就是缺少openssl的库。

基于Windows手动编译openssl和直接安装openssl_第16张图片

实际上就是缺少上面的两个库。

此时,运行QT程序,,一切正常,,不再报错了。。

在这里插入图片描述
如果还是不行,建议直接将这两个库拷贝到 E:\Qt5.13.1\install\5.13.1\msvc2017_64\bin目录下。。。
当然程序打包的时候也别忘了要拷过去。

四、参考博客

OpenSSL之六:OpenSSL源码编译安装
Windows 下编译 OpenSSL

你可能感兴趣的:(#,QT开发经验,Linux篇,openssl,ssl)