Windows10 下通过 Visual Studio2022 编译 openssl 3.4
- 1 准备环境
- 1.2 perl
- 1.2.1 ActiveState Perl 和 Strawberry Perl 的区别
- 1.2.2 perl 下载
- 1.2.3 验证安装
- 1.2 NASM
- 1.2.1 Windows 安装 NASM
- 1.2.2 解压
- 1.2.3 配置 NASM 的环境变量
- 1.3 VS 配置
- 1.3.1 配置 VS nmake 的环境变量
- 1.3.2 以管理员身份运行命令行
- 1.3.3 配置 VS x64 编译环境
- 2 获取源代码
- 3 编译 openssl
- 3.1 执行 perl Configure
- 3.2 编译生成 win32 debug和release两个版本
- 3.3 编译生成 x64 debug和release两个版本
- 3.4 编译 64 位 Debug 库实例
- 3.4.1 perl Configure
- 3.4.2 配置检查
- 3.4.3 nmake 编译
- 3.4.4 安装 nmake install
- 3.4.5 openssl 环境变量配置
- 4 使用 openssl
- 4.1 常见用法
- 4.1.1 生成server的密钥对
- 4.1.2 生成 server 的证书签名申请(CSR)
- 4.1.3 创建 CA 的签名证书(CRT)
- 4.1.4 生成server的证书(CRT)
- 4.2 另一种方法
- 5 附:常见错误
- 5.1 错误:编译 opensll 找不到 vs 自带的一些头文件
- 5.2 错误:创建目录没有权限
- 5.3 opensll 无法找到配置文件 openssl.cnf
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 --versionThis is perl 5, version 40, subversion 0 (v5.40.0) built for MSWin32-x64-multi-threadCopyright 1987-2024, Larry WallPerl 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 2024C:\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\BuildC:\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
* masterremotes/origin/HEAD -> origin/master...remotes/origin/master...remotes/origin/openssl-3.4...
迁出最新的稳定版本3.4,并建立自己本地分支 openssl-3.4j