当前位置: 首页 > article >正文

Windows10 下通过 Visual Studio2022 编译 openssl 3.4

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 --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


                

http://www.kler.cn/a/387153.html

相关文章:

  • 【论文阅读】利用SEM二维图像表征黏土矿物三维结构
  • 使用Git工具在GitHub的仓库中上传文件夹(超详细)
  • FMC 扩展子卡6 路 422,8 组 LVDS,8 路 GPIO
  • 异步提交Django
  • 关于element-plus中el-table组件宽度一直连续不断增加的问题
  • kafka如何知道哪个消费者消费哪个分区?
  • go语言使用总结(持续更新)
  • 前端开发利器:npm 软链接
  • MYSQL-显示错误信息ERRORS 的语句(十七)
  • 软件项目整体实施方案,从立项到交付验收完整过程实施方案,软件实施方案(word原件)
  • [241110] 微软发布多智能体系统Magentic-One | 社区讨论:Ubuntu 26.04 LTS 发布前移除 Qt 5
  • 【MATLAB代码】二维平面上的TDOA,使用加权最小二乘法,不限制锚点数量,代码可复制粘贴
  • 24-11-9-读书笔记(三十二)-《契诃夫文集》(六)上([俄] 契诃夫 [译] 汝龙)药品是甜的,真理是美的,咖啡是苦的,生活是什么啊?
  • 【ChatGPT】如何通过问题链条优化ChatGPT的思维逻辑
  • 高效共享出行:基于SpringBoot的汽车管理系统
  • MySQL之索引(1)(索引概念与作用、红黑树、b树、b+树)(面试高频)
  • A12S25-A2-RH,A12A35-A2-RH 安霸ABMBRELLA 图像传感器汽车记录主控芯片 在售
  • Linux中.NET读取excel组件,不会出现The type initializer for ‘Gdip‘ threw an exception异常
  • 【51单片机输出50ms与200ms方波】
  • Mysql命令大全
  • C#实现在windows上实现指定句柄窗口的指定窗口坐标点击鼠标左键和右键的详细情况
  • 【功能介绍】信创终端系统上各WPS版本的授权差异
  • ReactOS 4.2 OBJECT_TYPE_INITIALIZERj结构体的实现
  • Go 中的泛型,日常如何使用
  • C#里怎么样判断一个数是偶数还是奇数
  • 如何避免消息的重复消费问题?(消息消费时的幂等性)