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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/11141.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

了解Hadoop:大数据处理的核心框架

在当今数据爆炸的时代,海量数据的存储和处理已成为一个巨大的挑战。传统数据库和计算模型难以应对如此庞大的数据规模。为了解决这一问题,Apache Hadoop应运而生,它是一种分布式存储和处理框架,能够高效地处理海量数据。本文将详细…

本溪与深圳市新零售产业互联协会共商世界酒中国菜湾区农业发展

本溪满族自治县与深圳市新零售产业互联协会汇聚鹏城共商世界酒中国菜大湾区农业发展大计 2024年11月9日下午2点,深圳市新零售产业互联协会内气氛热烈,一场关乎农业产业发展未来的重要讨论正在这里举行。此次会议汇聚了来自本溪满族自治县和大湾区的众多精…

互联网广告的变现逻辑|计费模式|CPC、CPM、OCPC、OCPM

写在前面 最近的工作和广告相关,就整理一下自己学到的关于互联网广告变现的一些知识。 广告是互联网主要变现手段之一,一般的互联网公司都会有个商业化部门专门做广告的变现。那广告究竟是怎么变现的呢?怎么广告的好坏和什么有关呢&#xff1…

从0开始深度学习(29)——文本预处理

序列数据中,最常见的例子就是文本数据,例如,一篇文章可以被简单地看作一串单词序列,甚至是一串字符序列。 本节中,我们将解析文本的常见预处理步骤。 0 文本预处理步骤 将文本作为字符串加载到内存中。将字符串拆分为…

JDBC学习笔记--JdbcUtil工具类

目录 (一)为什么要使用JdbcUtil工具类 (二)创建一个prorperties文件 1.在文件目录或src目录下,选择新建FIle 2.创建properties文件 3.编写配置文件 Java基础:反射 4.获取资源的方式 第一种 第二种…

DNS域名解析

1、DNS简介 DNS(Domain Name System)是互联网上的一项服务,它作为将域名和IP地址相互映射的一个分布式 数据库,能够使人更方便的访问互联网。 DNS系统使用的是网络的查询,那么自然需要有监听的port。DNS使用的是53端…

点云从入门到精通技术详解100篇-基于结构光测量的三维人脸重建及识别(下)

目录 4.4 实验结果与分析 5 基于多特征组合阈值技术的三维人脸识别 5.1 引言 5.2 基于多特征组合阈值技术的部分遮挡三维人脸识别 5.2.1 三维人脸预处理 5.2.2 三维人脸表征 5.2.3 混合平均脸生成 5.2.4 基于多特征组合式遮挡去除法 5.2.5 神经网络架构 5.2…

A025-基于SpringBoot的售楼管理系统的设计与实现

🙊作者简介:在校研究生,拥有计算机专业的研究生开发团队,分享技术代码帮助学生学习,独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取,记得注明来意哦~🌹 赠送计算机毕业设计600…

私域流量圈层在新消费时代的机遇与挑战:兼论开源 AI 智能名片、2 + 1 链动模式、S2B2C 商城小程序的应用

摘要:本文剖析了私域流量圈层在新消费时代呈现出的独特温度与信任优势,阐述了从传统销售到新消费转型中用户心理的变化。同时,强调了内容对于私域流量的关键作用,并分析开源 AI 智能名片、2 1 链动模式、S2B2C 商城小程序在私域流…

LeetCode 540.有序数组中的单一元素

思路一:hash,键存入元素,值存入次数,然后遍历,不是最优解 思路二:二分查找 假设数组为 [1, 1, 2, 2, 3, 4, 4],其中唯一出现一次的元素是 3。在一个有序数组中,如果没有唯一的元素&…

ssm082基于java斗车交易系统设计与实现+vue(论文+源码)_kaic

摘 要 21世纪的今天,随着社会的不断发展与进步,人们对于信息科学化的认识,已由低层次向高层次发展,由原来的感性认识向理性认识提高,管理工作的重要性已逐渐被人们所认识,科学化的管理,使信息存…

linux命令curl

curl 是一个用于从命令行传输数据的强大工具,支持多种协议(如 HTTP、HTTPS、FTP 等)。它常用于测试 API、下载文件、提交表单、模拟浏览器请求等操作。 基本语法 curl [选项] [URL]常用选项 以下是一些常用的 curl 命令选项及其功能&#…

【GoWeb示例】通过示例学习 Go 的 Web 编程

文章目录 你好世界HTTP 服务器路由(使用 gorilla/mux)连接到 MySQL 数据库MySQL 数据库简单操作模板静态资源和文件操作表单处理中间件(基础)中间件(高级)会话JSONWebsockets密码哈希 你好世界 Go语言创建…

基于Multisim的烟雾报警电路设计与仿真

设计任务和要求: ( 1 )需要有低浓度、中浓度和高浓度 3 个浓度范围。 ( 2 )需要用电压比较器设置不同浓度的阈值。 ( 3 )用蜂鸣器和二极管指示灯( 3 个浓度范围的指示灯用 3 …

旅行是过于梦幻的镜月【西域之旅】

旅行的意义就是几个定格的“瞬间” 短暂的相遇 恰如涉水而过 每条河终究是 奔向属于它的海看到一句话:一个人的行走范围,就是他的世界。 快节奏的社会里,旅行也许不值得被歌颂,但它却实实在在拓宽一个人的世界。 当我没灵感时&…

Simulink中Matlab function使用全局变量

目录 一. 引言二. 普通Matlab function使用全局变量三. Simulink中的Matlab function使用全局变量四. 如何利用Matlab function的全局变量施加随机噪声 一. 引言 最近发现了之前仿真中的一个问题,记录一下备忘。 Matlab function中有时候需要用到全局变量&#xf…

架构篇(04理解架构的演进)

目录 学习前言 一、架构演进 1. 初始阶段的网站架构 2. 应用服务和数据服务分离 3. 使用缓存改善网站性能 4. 使用应用服务器集群改善网站的并发处理能力 5. 数据库读写分离 6. 使用反向代理和CDN加上网站相应 7. 使用分布式文件系统和分布式数据库系统 8. 使用NoSQL和…

zabbix前台界面配置

点击下一步 如上异常错误解决方法代码如下,安装缺失的软包,并修改php.ini对应参数的值即可 yum install php-mbstring php-bcmath php-gd php72w-xml -y yum install gd gd-devel -y 修改配置文件 sed -i /post_max_size/s/8/16/g;/max_ex…

数据库去O搞了个寂寞!甲骨文股价翻倍,市值突破5200亿美金!

随着川建国同志的当选,到账最近几天美股科技股都有不小的涨幅,涨幅最高的当tesla莫属,然而据传甲骨文老板也是川普的金主! 或许正因为如此,甲骨文股价也创新高了,最近几天涨了10%,市值突破5200…

[强网杯 2019]随便注 1

[强网杯 2019]随便注 1 审题 观察题目,判断可能是SQL注入,或者Linux命令执行,结合题目就是注入了 知识点 堆叠注入,handler命令执行,更改表名,预编译 知识点解析 堆叠注入 简单来说,堆叠注入就是按…