首页 > 系统相关 >在Windows 10系统上编译OpenSSL3.4.0

在Windows 10系统上编译OpenSSL3.4.0

时间:2024-12-30 17:32:52浏览次数:1  
标签:10 VC OpenSSL3.4 cbc Windows aria openssl OpenSSL Configure

在Windows 10系统上编译OpenSSL3.4.0

现在是2024年12月30日,星期一.

下载openssl源码

这里我下载的是现在的时间的最新版的openssl,版本是3.4.0.

https://github.com/openssl/openssl/archive/refs/tags/openssl-3.4.0.zip

安装vs

vs全称:Visual Studio,注意不是vscode,vscode全称是:Visual Studio Code.

我的vs版本是Visual Studio 2013.

安装vs,任何一个版本的vs,我这里安装的vs2013.

为什么要安装vs,如果没有安装vs,就没有nmake,nmake是用来编译的.

安装windows sdk

一般情况下,你安装vs时就可以选择下载安装windows sdk,如果没有安装windows sdk,下载并安装

windows sdk下载页面链接如下:

https://developer.microsoft.com/zh-cn/windows/downloads/windows-sdk/

 

如果你下载安装程序,记得把里面的所有sdk全选安装,

如果你知道需要下载哪些sdk,你就自己选择性安装即可.

 

如论你下载[安装程序]还是下载[iso],其实都是一样的界面,一样的安装流程,

区别在于

[安装程序]是在线安装,

[iso]是把东西全部下载了,离线安装,文件都在iso镜像文件内.额外说明一下,其实iso文件也是压缩文件的一种,也是压缩包.

安装perl

perl下载页面链接:

https://strawberryperl.com/

选择红框里的msi下载并且安装

 

执行

遇到Locale 'Chinese (Simplified)_China.936' is unsupported, and may crash the interpreter.提示,可以不用理会,

但如果你想解决这个提示,把命令换语言环境设置成英文,执行:

set LOCALE=en_US

 

在openssl文件夹里进入cmd执行

perl Configure VC-WIN32

如果你想要指定编译出来的文件全部放到统一的一个文件夹里,可以使用--prefix=C:/MyOutputDirectory来指定,例如;

perl Configure VC-WIN32 --prefix=C:/openssl_build

如果没有指定安装目录,nmake install会把编译好的二进制文件全部复制到系统目录

 

然后继续cmd执行

"C:\app\Microsoft Visual Studio 12.0\VC\bin\vcvars32.bat"

使用evething搜索你电脑上vcvars32.bat文件,复制文件路径,

例如我的电脑上这个文件所在位置:

C:\app\Microsoft Visual Studio 12.0\VC\bin\vcvars32.bat

然后进入cmd

执行(记得路径有空格的话,要把路径使用双引号括起来):

"C:\app\Microsoft Visual Studio 12.0\VC\bin\vcvars32.bat"

这个bat文件会把自动配置环境变量.

 

cmd执行完vcvars32.bat,cd到openssl文件夹,执行:

nmake

这个编译过程时间可能会有点长,大约20分钟到30分钟.

 

编译完成之后,执行:

nmake install

nmake install这个命令是把编译好的二进制文件自动复制到你的系统目录里面,

因为我执行perl时没有指定安装目录,nmake install把编译好的二进制文件复制到了c盘的这样一个文件夹里:

C:/Program Files (x86)/OpenSSL

 

openssl的简单使用

现在,你在cmd里面,就可以使用openssl了,执行:

openssl

你会进入openssl的环境里

R:\openssl-3.4.0>openssl OpenSSL>

退出openssl环境,输入exit:

R:\openssl-3.4.0>openssl OpenSSL> exit

R:\openssl-3.4.0>

 

如果你想要查看openssl都有哪些指令,执行:

openssl help

该命令会提示出openssl所有的标准指令,例如我的执行结果:

R:\openssl-3.4.0>openssl help Standard commands asn1parse ca ciphers cms crl crl2pkcs7 dgst dhparam dsa dsaparam ec ecparam enc engine errstr gendsa genpkey genrsa help list nseq ocsp passwd pkcs12 pkcs7 pkcs8 pkey pkeyparam pkeyutl prime rand rehash req rsa rsautl s_client s_server s_time sess_id smime speed spkac srp storeutl ts verify version x509

Message Digest commands (see the `dgst' command for more details) blake2b512 blake2s256 gost md4 md5 mdc2 rmd160 sha1 sha224 sha256 sha3-224 sha3-256 sha3-384 sha3-512 sha384 sha512 sha512-224 sha512-256 shake128 shake256 sm3

Cipher commands (see the `enc' command for more details) aes-128-cbc aes-128-ecb aes-192-cbc aes-192-ecb aes-256-cbc aes-256-ecb aria-128-cbc aria-128-cfb aria-128-cfb1 aria-128-cfb8 aria-128-ctr aria-128-ecb aria-128-ofb aria-192-cbc aria-192-cfb aria-192-cfb1 aria-192-cfb8 aria-192-ctr aria-192-ecb aria-192-ofb aria-256-cbc aria-256-cfb aria-256-cfb1 aria-256-cfb8 aria-256-ctr aria-256-ecb aria-256-ofb base64 bf bf-cbc bf-cfb bf-ecb bf-ofb camellia-128-cbc camellia-128-ecb camellia-192-cbc camellia-192-ecb camellia-256-cbc camellia-256-ecb cast cast-cbc cast5-cbc cast5-cfb cast5-ecb cast5-ofb des des-cbc des-cfb des-ecb des-ede des-ede-cbc des-ede-cfb des-ede-ofb des-ede3 des-ede3-cbc des-ede3-cfb des-ede3-ofb des-ofb des3 desx idea idea-cbc idea-cfb idea-ecb idea-ofb rc2 rc2-40-cbc rc2-64-cbc rc2-cbc rc2-cfb rc2-ecb rc2-ofb rc4 rc4-40 rc5 rc5-cbc rc5-cfb rc5-ecb rc5-ofb seed seed-cbc seed-cfb seed-ecb seed-ofb sm4-cbc sm4-cfb sm4-ctr sm4-ecb sm4-ofb zlib

 

假如我现在想要计算一个文件的md5值,执行:

openssl md5 "C:\Users\rkey\Desktop\桌面备份-2021.11.27\nmake和nmake install.md"

返回结果:

MD5(C:\Users\rkey\Desktop\桌面备份-2021.11.27\nmake和nmake install.md)= fcf45ab6dc84626c544e355c8f16808d

 

其他

perl Configure VC-WIN32 --prefix=C:/openssl_build

这个命令做了哪些事情?

在 OpenSSL 的上下文中,perl Configure VC-WIN32 命令是在 Windows 系统上编译 OpenSSL 库的第一步。这个命令执行以下操作:

  1. 配置构建环境

    • Configure 脚本是 OpenSSL 源代码中的一个 Perl 脚本,它用于检测系统环境并生成适用于特定平台的构建配置。

  2. 选择构建选项

    • VC-WIN32 是一个参数,指定了使用 Microsoft Visual C++ 编译器进行 32 位编译。这意味着编译出的 OpenSSL 库将适用于 32 位 Windows 系统。

  3. 生成 Makefile

    • 执行 Configure 脚本会根据选择的选项(在这个例子中是 VC-WIN32)生成一个 Makefile。这个 Makefile 包含了编译 OpenSSL 所需的所有指令和设置。

  4. 设置编译参数

    • Configure 脚本会根据输入的参数设置编译器标志、定义宏、包含目录和其他编译参数,以便生成适用于特定平台的 OpenSSL 版本。

  5. 指定安装目录:

    • --prefix 参数用于指定安装目录的前缀。在这里,C:/openssl_build 是你希望 OpenSSL 被安装到的目标目录。这意味着编译后的 OpenSSL 库、可执行文件、头文件等将被放置在这个目录下。

      • 库文件(如 .lib.dll)将被放置在 C:/openssl_build/lib

      • 可执行文件(如 openssl.exe)将被放置在 C:/openssl_build/bin

      • 头文件(如 .h)将被放置在 C:/openssl_build/include

 

编译其他架构的openssl

根据openssl项目的描述,你可以编译其他系统架构的openssl二进制可执行程序,你在openssl的源码里也能找到这一部分的说明:

https://github.com/openssl/openssl/blob/master/NOTES-WINDOWS.md

(如果你下载了源码,你也可以用evething搜索NOTES-WINDOWS.md,查看关于这一部分的描述)

 

注意,如果你选择编译其他架构的openssl,那么你在配置项构建时也要进行相关指定,例如我要编译64位的openssl,那么相关指令就要改变:

perl Configure VC-WIN64A

C:\app\Microsoft Visual Studio 12.0\VC\bin\amd64\vcvars64.bat

(只有这两点需要改变,其他部分不变,请注意执行流程的顺序)

 

以下是相关内容翻译:

  1. 使用具有管理权限的 Visual Studio 开发人员命令提示符,根据预期的体系结构选择其变体之一。或者使用选项之一运行cmd并执行、 、、、、或。这将设置、等所需的环境变量。另请参阅 https://docs.microsoft.com/cpp/build/building-on-the-command-linevcvarsall.bat``x86``x86_amd64``x86_arm``x86_arm64``amd64``amd64_x86``amd64_arm``amd64_arm64``nmake.exe``cl.exe

  2. 从 OpenSSL 源目录的根目录输入

    • perl Configure VC-WIN32 如果你想要 32 位 OpenSSL 或者

    • perl Configure VC-WIN64A 如果你想要 64 位 OpenSSL 或者

    • perl Configure VC-WIN64-ARM如果你想要 Arm 上的 Windows (win-arm64) OpenSSL 或者

    • perl Configure VC-WIN64-CLANGASM-ARM如果你想要使用 clang-cl 作为汇编程序支持 Arm 上的 Windows(win-arm64)OpenSSL,或者

    • perl Configure VC-CLANG-WIN64-CLANGASM-ARM如果你想要在 Arm (win-arm64) 上使用 Windows OpenSSL,使用 clang-cl 作为编译器和汇编器,或者

    • perl Configure VC-WIN32-HYBRIDCRT如果你想要依赖于 Universal CRT 的 32 位 OpenSSL 或者

    • perl Configure VC-WIN64A-HYBRIDCRT如果你想要依赖于 Universal CRT 的 64 位 OpenSSL 或者

    • perl Configure 让 Configure 识别平台

标签:10,VC,OpenSSL3.4,cbc,Windows,aria,openssl,OpenSSL,Configure
From: https://www.cnblogs.com/r-key/p/18641791

相关文章

  • 2024.9.10
    什么是HTML?HTML是用来描述网页的一种语言。HTML指的是超文本标记语言: HyperText Markup LanguageHTML不是一种编程语言,而是一种标记语言标记语言是一套标记标签 (markuptag)HTML使用标记标签来描述网页HTML文档包含了HTML 标签及文本内容HTML文档也叫做 we......
  • 【4】0x10服务&27服务
    1.0x10服务之诊断会话控制诊断仪与ECU之间的诊断通信过程就相当于两个人的会话过程,你一言,我一语,会话可以在不同的场景下进行。0x10服务即诊断会话控制,规定了默认会话(01)、拓展会话(03)、编程会话(02),三种常见的诊断会话。 默认会话:22、14、19、11服务等。 扩展会话:2E、27服务等......
  • ABB变频器ACS510参数设置
    说明:模拟输入1301/1302为模拟量输入0-20MA对应数值,为防止电机默认的0为反向最高速转动,需将1301设为20%,既模拟量输入为4-20MA控制。......
  • 10款高效项目管理工具,让工作更轻松
    引言在当今快节奏的工作环境中,项目管理的效率直接影响着工作成果。无论是大型企业、小型创业团队还是个人自由职业者,都需要借助合适的项目管理工具来提升工作效率、实现目标。市面上项目管理工具种类繁多,每一款都有其独特的优势和适用场景。本文将为大家介绍10款高效项目管理工具......
  • 资料DRV8210PDSGR 12V 电机驱动器、THGBMJG6C1LBAB7 高性能e-MMC存储器、LAN7800-I/Y9
    DRV8210PDSGR12V、1AH桥电机驱动器说明:DRV8210P是一款集成电机驱动器,具有4个N沟道功率FET、电荷泵稳压器和保护电路。三倍电荷泵架构允许该器件在低至1.65V的电压下工作,以适应1.8V电源轨和低电池条件。电荷泵集成了所有电容器,以减小PCB上电机驱动器的整体解决方......
  • [Windows] 数据恢复软件R-Studio 8.14.179623
    R-Studio是一个功能强大、节省成本的反删除和数据恢复软件系列。它采用独特的数据恢复新技术,为恢复FAT12/16/32、NTFS、NTFS5(由Windows2000/XP/2003/Vista/Windows8/Windows10创建或更新)、Ext2FS/Ext3FS(OSXLINUX文件系统)以及UFS1/UFS2(FreeBSD/OpenBSD/NetBSD文件系统)分区的......
  • windows如何安装JDK8?附安装包
    前言大家好,我是小徐啊。我们在开发Java的时候,第一步就是需要安装JDK,今天,小徐来介绍下Java开发中,最流行的JDK8的安装方式。文末附获取方式。如何安装JDK8首先,双击JDK8的安装包,开始安装。然后,会弹出JavaSE8的一些说明,查看一下,然后点击下一步按钮即可。然后,我们需要选择要安......
  • 项目管理必备:10个最佳工具精选
    在项目管理的复杂世界中,拥有合适的工具就如同拥有了一把打开高效协作与成功之门的钥匙。随着市场上项目管理工具的日益增多,如何挑选出最适合自己团队的工具成为了众多项目管理者面临的难题。今天,我们将为您精选10个最佳的项目管理工具,详细介绍它们的特点和优势,帮助您在项目管理的......
  • 题解:P11487 「Cfz Round 5」Gnirts 10
    枚举\(S\)每个前缀,计算其对答案的贡献。把枚举出来的前缀\(S[1\dotsi]\)看成已有的串,我们要插入一些字符使得它有\(n\)个\(0\),\(m\)个\(1\),且\(S[1\dotsi]\)为\(T\)的子序列,而\(S[1\dotsi+1]\)不是。问方案数(统计到最后答案的时候要乘长度)。发现在\(1\)前......
  • 2024年10大顶级项目管理工具
    在当今快节奏的商业环境中,高效的项目管理对于企业的成功至关重要。无论是产品研发、市场营销还是企业运营,都离不开有效的项目管理工具。随着技术的不断发展,2024年涌现出了许多优秀的项目管理工具,它们各具特色,能够满足不同团队和项目的需求。本文将为您介绍2024年的10大顶级项目管......