Bootstrap

Windows10 下通过 Visual Studio2022 编译 openssl 3.4


OpenSSL是一个强大的安全套接层(SSL/TLS)和传输层安全(TLS)协议库,它不仅支持各种加密算法,还能用于创建数字证书,包括自签名的根证书权威机构(CA)证书。本文将详细阐述如何编译 OpenSSL 并生成 CA 证书以及相关的证书文件。

1 准备环境

Win10 				64位
perl      			strawberry-5.40.0.1
Visutal Studio 		2022 Enterprise
openssl      		3.4
nasm      			NASM version nasm-2.16.03

此处省略 VS 的安装。

1.2 perl

1.2.1 ActiveState Perl 和 Strawberry Perl 的区别

ActiveStatePerl 和 Strawberry Perl 是 Windows 平台上 Perl 的编译器。
ActiveState Perl 和 Strawberry Perl 最大的区别是 Strawberry Perl 里面有多包含一些 CPAN 里的模块,所以Strawberry Perl 下载的安装文件有 80多M, 而 ActiveState Perl 只有20M 左右。

  • ActiveState Perl: ActiveState提供了一个免费的社区版本和一个商业支持的Perl用于Win32和Perl的二进制分布。
  • Strawberry Perl: 用于Windows的100%开源Perl,使用来自CPAN的模块不需要二进制包。

1.2.2 perl 下载

地址:https://www.perl.org/get.html
在这里插入图片描述
其他版本选择更多中选择,如5.38.22

在这里插入图片描述

1.2.3 验证安装

下载后默认安装,完成后在 cmd 命令行输入 perl --version 查看是否安装成功。

C:\Users\lzc73>perl --version

This is perl 5, version 40, subversion 0 (v5.40.0) built for MSWin32-x64-multi-thread

Copyright 1987-2024, Larry Wall

Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.

Complete documentation for Perl, including FAQ lists, should be found on
this system using "man perl" or "perldoc perl".  If you have access to the
Internet, point your browser at https://www.perl.org/, the Perl Home Page.


C:\Users\lzc73>

1.2 NASM

  • NASM(Netwide Assembler)是一个开源的、可移植的汇编器,它支持多种平台和操作系统。它可以用来编写16位、32位以及64位的代码,并且支持多种输出格式,包括ELF、COFF、OMF、a.out、Mach-O等。NASM使用Intel语法,与AT&T语法的汇编器(如GNU汇编器)不同。它不生成段覆盖,也不使用MASM和TASM的自动生成段覆盖功能。
  • NASM的安装相对简单,无论是在DOS、Windows还是Unix-like系统下,都有相应的安装方法。在DOS或Windows下,可以将NASM的压缩包解压到一个目录中,然后就可以使用其中的可执行文件了。在Unix-like系统下,可以通过源代码包来编译和安装NASM。
  • NASM的命令行语法允许用户指定输出文件的格式(使用-f选项),指定输出文件的文件名(使用-o选项),以及其他多种选项,如产生列表文件(使用-l选项)、预包含文件(使用-p选项)、预定义宏(使用-d选项)等。NASM还提供了一些特殊的功能,比如TASM兼容模式(使用-t选项)、多遍优化(使用-O选项)等。
  • NASM的语法简洁,它区分大小写,需要使用方括号来引用内存地址,并且不存储变量的类型。NASM不支持ASSUME操作符,也不支持内存模型,程序员需要自己管理这些方面。

1.2.1 Windows 安装 NASM

官网下载,地址:https://www.nasm.us/

在这里插入图片描述
点击 DOWNLOAD,跳转到如下界面;
在这里插入图片描述
选择最新版本2.16.03/版本后跳转到如下界面;
在这里插入图片描述
根据自己电脑系统位数,选择wind64/后跳转到如下界面;
在这里插入图片描述

1.2.2 解压

直接选择可执行程序下载,如下zip文件,并解压;
将解压后的 nasm-2.16.03 文件夹拷贝到 C:\Program Files\nasm-2.16.03,或直接解压到 C:\Program Files 目录。
在这里插入图片描述

1.2.3 配置 NASM 的环境变量

将 C:\Program Files\nasm-2.16.03 添加到系统环境 path 变量中
在这里插入图片描述
在 cmd 命令行中输入 nasm -v 查看是否配置成功。返回对应版本就说明配置NASM成功✅。

C:\Users\lzc73>nasm -v
NASM version 2.16.03 compiled on Apr 17 2024

C:\Users\lzc73>

1.3 VS 配置

1.3.1 配置 VS nmake 的环境变量

把vs的 nmake 加入到环境变量,我们先找到自己 VS 2022 安装目录下的 nmake 所在路径,我的 nmake 所在路径:

C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.41.34120\bin\Hostx64\x64

在这里插入图片描述

1.3.2 以管理员身份运行命令行

打开c:\windows\system32目录,找到cmd,右键以管理员身份运行。

1.3.3 配置 VS x64 编译环境

在 cmd 命令行中进入 VS 的 Build 目录 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build(注意:VS 安装目录),执行目录下的脚本配置将要编译的程序版本。

  • 编译64位版本执行:vcvarsall.bat x64
  • 编译32位版本执行:vcvarsall.bat x64_x86
    我要编译 x64 的 opensll,执行 vcvarsall.bat x64 配置编译64位版本的环境
C:\work\Source\Repos\WebSocket\openssl>cd C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build

C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build>
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build>vcvarsall.bat x64
**********************************************************************
** Visual Studio 2022 Developer Command Prompt v17.11.2
** Copyright (c) 2022 Microsoft Corporation
**********************************************************************
[vcvarsall.bat] Environment initialized for: 'x64'

C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build>

2 获取源代码

创建源码放置目录:C:\work\Source\Repos\WebSocket,在 cmd 命令行下clone代码

C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build>cd C:\work\Source\Repos\WebSocket
C:\work\Source\Repos\WebSocket>git clone https://github.com/openssl/openssl.git
C:\work\Source\Repos\WebSocket>cd C:\work\Source\Repos\WebSocket\openssl
C:\work\Source\Repos\WebSocket\openssl>git branch -a
* master
  remotes/origin/HEAD -> origin/master
  ...
  remotes/origin/master
  ...
  remotes/origin/openssl-3.4
  ...

迁出最新的稳定版本3.4,并建立自己本地分支 openssl-3.4j


                
      
;