openssl3.2 - 编译

news2024/9/29 5:30:53

文章目录

    • openssl3.2 - 编译
    • 概述
    • OpenSSL源码下载
    • 编译目标
    • 如何编译
    • 前置环境 - perl
    • 前置环境 - VS
    • 前置环境 - NASM
    • 快速编译步骤
    • 编译 - Quick start
    • Install Perl
    • Install NASM
    • Use Visual Studio Developer Command Prompt with administrative privileges
    • From the root of the OpenSSL source directory enter
    • END

openssl3.2 - 编译

概述

ECC实现没有轻量级的工程, 那就只能用openssl了.
先从头编译一个OpenSSL.

OpenSSL源码下载

当前OpenSSL稳定版为3.2, 官方源码包url : https://www.openssl.org/source/openssl-3.2.0.tar.gz
将OpenSSL工程迁出到本地(学习和查找资料) : https://github.com/openssl/openssl.git

编译目标

在win10下编译成x64版本的OpenSSL, 用VS2019来编译源码包.

如何编译

看源码包中的README.md

在这里插入图片描述
在这里插入图片描述

前置环境 - perl

在这里插入图片描述

前置环境 - VS

我这已经有了VS2019企业版
在这里插入图片描述

前置环境 - NASM

去NASM官方, 看到当前稳定版为2.16.01, 选win64版本.
在这里插入图片描述

快速编译步骤

在这里插入图片描述
不过, 看到文档中有说, 如果OpenSSL的编译选用运行时库(忘了那个文档这么说, 反正是官方的), 要和应用程序选用的运行时库配套, 否则有问题.
在这里插入图片描述
所以不想采用快速编译步骤.
想再看看INSTALL.md, 看看编译参数怎么写. 编译出供VS2019用的debug版和release版的OpenSSL输出. 包含4种运行时库的版本. 我们平时主要用的运行时库就2种(/MD, /MDd), 因为都使用DLL版本的运行时库, 不静态包含运行时库.
在这里插入图片描述
INSTALL.md写的挺详细的, 有编译选项怎么写, 我主要关注怎么选择不同的运行时库.
在这里插入图片描述
看了一圈没看到如何选择运行时库.
算了, 那就按照快速编译的文档, 将编译命令整理一下, 执行编译. 也许编译完, 安装后, 就有不同运行时库的版本.

编译 - Quick start

在这里插入图片描述

Install Perl

这步有了, 前面已经装了 ActivePerl-5.26.0.2600-MSWin32-x86-64int-403866.rar
且在命令行下可以直接访问到Perl

C:\Users\chenx>perl --version

This is perl 5, version 26, subversion 0 (v5.26.0) built for MSWin32-x86-multi-thread-64int
(with 1 registered patch, see perl -V for more detail)

Copyright 1987-2017, Larry Wall

Binary build 2600 [403866] provided by ActiveState http://www.ActiveState.com
Built Aug 30 2017 16:46:44

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 http://www.perl.org/, the Perl Home Page.

Install NASM

装了nasm-2.16.01-installer-x64.exe, 安装位置 c:\nasm
打开命令行, nasm.exe并不在PATH环境变量中.
因为nasm仅仅在编译时使用, 准备在命令行中临时加环境变量的方法, 可以减轻环境变量的污染.

Use Visual Studio Developer Command Prompt with administrative privileges

要编译x64版本, 打开vs2019x64本地命令行, 选择管理员身份运行.
在这里插入图片描述
设置临时变量, 加入nasm路径

**********************************************************************
** Visual Studio 2019 Developer Command Prompt v16.11.32
** Copyright (c) 2021 Microsoft Corporation
**********************************************************************
[vcvarsall.bat] Environment initialized for: 'x64'

C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise>set path=c:\nasm;%path%

测试一下, nasm是否可以访问

C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise>nasm -v
NASM version 2.16.01 compiled on Dec 21 2022

在vs2019命令行中也能访问到perl, 和普通命令行中一致.

From the root of the OpenSSL source directory enter

进入openssl源码包路径, 用perl配置openssl, 选择输出路径前缀, 选择VS x64版本
在这里插入图片描述
默认的安装路径要改一下, 不想用.

cd /d D:\3rd_prj\crypt\openssl-3.2.0
perl Configure VC-WIN64A --prefix=c:\openssl_3d2 --openssldir=c:\openssl_3d2\common

在这里插入图片描述
openssl提示, 说缺nmake.exe或者dmake.exe.
但是nmake是可以在当前命令行运行的.
如果在vs2019命令行中, 不能运行nmake, 那还了得…
应该是openssl搞错了, 不理这个错误提示.

nmake

编译的时间好长, 等编译完成.

nmake test
// 测试的时间也好长
All tests successful.
Files=294, Tests=3408, 867 wallclock secs ( 4.92 usr +  0.98 sys =  5.91 CPU)
Result: PASS

测试通过了, 从里面能看出有些特性没有, 以后如果需要, 可以在配置中加上, 重新编译, 如果没有特殊要求, 就用openSSL默认的编译输出.

01-test_fipsmodule_cnf.t ................ skipped: Test only supported in a fips build
01-test_symbol_presence.t ............... skipped: This is unsupported on platforms that don't have 'nm'
03-test_fipsinstall.t ................... skipped: Test only supported in a fips build
04-test_bio_tfo.t ....................... skipped: This test requires enable-tfo
05-test_rc5.t ........................... skipped: rc5 is not supported by this OpenSSL build
07-test_bio_comp.t ...................... skipped: No compression algorithms
20-test_cli_fips.t ...................... skipped: Test only supported in a fips build with security checks
30-test_acvp.t .......................... skipped: ACVP is not supported by this test
30-test_afalg.t ......................... skipped: test_afalg not supported for this build
30-test_pairwise_fail.t ................. skipped: These tests are unsupported in a non fips build
40-test_rehash.t ........................ skipped: test_rehash is not available on this platform
60-test_x509_store.t .................... skipped: test_rehash is not available on this platform
70-test_tls13certcomp.t ................. skipped: test_tls13certcomp needs compression and algorithms enabled
80-test_pkcs12.t ........................ skipped: Non-Greek system locale
82-test_tfo_cli.t ....................... skipped: test_tfo_cli needs tfo enabled
90-test_cert_comp.t ..................... skipped: Certificate compression is disabled in this OpenSSL build
90-test_fipsload.t ...................... skipped: Test is disabled with disabled fips

从测试结果来看, 缺的特性: fips, tfo, rc5, compression algorithms, ACVP, afalg, rehash,
安装

nmake install

安装后的目录结构

C:\openssl_3d2>tree
文件夹 PATH 列表
卷序列号为 BA70-59B2
C:.
├─bin
├─common
│  ├─certs
│  ├─misc
│  └─private
├─html
│  ├─man1
│  ├─man3
│  ├─man5
│  └─man7
│      └─img
├─include
│  └─openssl
└─lib
    ├─engines-3
    └─ossl-modules

安装后的html/manx目录中都是.html文件, 方便查资料.
安装后的目录里面没有demo工程, 需要去看源码包内的demo.
在这里插入图片描述

END

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

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

相关文章

Windows安装部署nginx

1、官网下载安装包: 官网地址:https://nginx.org/en/download.html 下载好后,解压即可: 在nginx的配置文件是conf目录下的nginx.conf,默认配置的nginx监听的端口为80,如果本地80端口已经被使用则修改成其…

分析抖音直播弹幕评论和礼物的websocket数据流信息,通过proto协议解析消息内容思路

现在定位到一个解析的大概位置: e.decode function(e, t) {e instanceof o || (e o.create(e));for (var n, i, s void 0 t ? e.len : e.pos t, u new r.webcast.im.MemberMessage(r.webcast. 通过请求找到发送请求的js代码位置,然后通过跟踪这…

ASP.NET Core中实现个人资料上传图片功能

当用户需要在ASP.NET Core中实现修改个人资料的功能时,其中一个常见的需求就是允许上传个人头像图片。下面将详细介绍如何在ASP.NET Core中实现修改个人资料上传图片的功能。 步骤一:控制器中添加一个HttpPost方法 首先,我们在控制器中添加…

基于JavaWeb+SSM+Vue基于微信小程序的消防隐患在线举报系统的设计与实现

基于JavaWebSSMVue基于微信小程序的消防隐患在线举报系统的设计与实现 源码获取入口KaiTi 报告Lun文目录前言主要技术系统设计功能截图订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 源码获取入口 KaiTi 报告 1.1 题目背景 随着信息化飞速发展,互联网不…

【gRPC学习】使用go学习gRPC

个人博客:Sekyoro的博客小屋 个人网站:Proanimer的个人网站 RPC是远程调用,而google实现了grpc比较方便地实现了远程调用,gRPC是一个现代的开源远程过程调用(RPC)框架 概念介绍 在gRPC中,客户端应用程序可以直接调用另一台计算机上的服务器应用程序上的方法&#…

PyTorch 进阶指南,这个宝典太棒了

最新写了很多关于 Pytorch 的文章,主要针对刚刚接触 Pytorch 的同学,文章我给大家列出来了,喜欢可以从0开始学习: 小白学 PyTorch 系列:这一次,我准备了 20节 PyTorch 中文课程小白学 PyTorch 系列&#x…

【视频图像篇】模糊图像处理之运动模糊造成的车牌号码图像模糊还原

【视频图像篇】模糊图像处理之运动模糊造成的车牌号码图像模糊还原 处理车辆运动过程中造成车牌号码的视频图像模糊—【蘇小沐】 0、目录 1、实验环境 2、路径 3、测量工具:测量模糊角度及距离 4、运动模糊滤波器 5、结果展示 1、实验环境 系统环境Windows…

YOLOv5训练损失、精度、mAP绘图功能 | 支持多结果对比,多结果绘在一个图片(消融实验、科研必备)

一、本文介绍 本文给大家带来的是YOLOv5系列的绘图功能,我将向大家介绍YOLO系列的绘图功能。我们在进行实验时,经常需要比较多个结果,针对这一问题,我写了点代码来解决这个问题,它可以根据训练结果绘制损失(loss)和mAP(平均精度均值)的对比图。这个工具不仅支持多个文件…

P12 音视频复合流——TS流讲解

前言 从本章开始我们将要学习嵌入式音视频的学习了 ,使用的瑞芯微的开发板 🎬 个人主页:ChenPi 🐻推荐专栏1: 《C_ChenPi的博客-CSDN博客》✨✨✨ 🔥 推荐专栏2: 《Linux C应用编程(概念类)_C…

C# 程序员如何进行职业规划?

C# 程序员如何进行职业规划? 在开始前我有一些资料,是我根据网友给的问题精心整理了一份「C#的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!&…

中通快递查询,中通快递单号查询,批量删除不需要的快递单号

快递单号的管理现在是许多企业和个人日常工作中不可或缺的一部分,面对堆积如山的快递单号,如何快速、准确地处理成了许多人的难题。今天,我们将为大家带来一款强大的快递单号处理软件——快递批量查询高手,让你从此告别繁琐的手动…

分布式系统架构设计之分布式缓存的数据拆分、数据同步和数据淘汰策略

三、数据拆分和同步策略 1、数据拆分 数据拆分是计算机科学中的一个概念,主要目的是为了提高数据访问速度或者在受限于存储空间大小时,对被访问的数据进行分块处理的技术,这种技术可以确保数据更高效地存储和访问。 在分布式系统中&#x…

59.网游逆向分析与插件开发-游戏增加自动化助手接口-文字资源读取类的C++还原

内容来源于:易道云信息技术研究院VIP课 上一个内容:游戏菜单文字资源读取的逆向分析-CSDN博客 码云地址(master分支):https://gitee.com/dye_your_fingers/sro_-ex.git 码云版本号:55358fb135a0c821d8e8…

前台收款单选择的保险公司 提示 往来户不属于该财务组织

前台收款单选择的保险公司 提示 往来户不属于该财务组织 问题避免 新增保险公司的时候,找一个已经存在的保险公司,利用多页签复制的方式来新增 保险公司 不然不能够自动生成 财务客户

STM32学习笔记二十二:WS2812制作像素游戏屏-飞行射击游戏(12)总结

至此,飞行射击游戏已经基本实现该有的功能,已经比较接近早期的商业游戏了。 如果采用脚本,可以完成关卡游戏,如果不用,也可以做成无限挑战游戏。 我们汇总一下制作的过程: 1、建模UML 2、主循环处理过程…

学习笔记:C++之 switch语句

Switch语句 作用:执行多条件分支语句 语法: switch(表达式){ case 结果1:执行语句;break; case 结果2:执行语句;break; ... default:执行语句&a…

百度自由DIY小程序源码:PHP+MySQL组合开发 带完整的搭建教程

随着移动互联网的快速发展,小程序已成为企业与用户互动的重要平台。然而,对于许多中小企业和开发者来说,从零开始开发一款小程序需要投入大量的时间和资源。 以下是部分代码示例: 系统特色功能一览: 1.高度自定义&…

一致化和一致量纲化问题

归一化/标准化实质是一种线性变换,线性变换有很多良好的性质,这些性质决定了对数据改变后不会造成“失效”,反而能提高数据的表现, (1)无量纲化 例如房子数量和收入,因为从业务层知道&#xf…

不是小米SU7买不起,而是17.58万的银河E8更有性价比

作者 |Amy 编辑 |德新 疯狂的2023年车市已过。这一年,新势力与传统车企自主品牌在新能源战略上多次交锋。 新能源汽车市场不再由新势力独领风骚,传统车企的新能源品牌进步迅猛,增长势头强劲。 以吉利汽车集团为例,2023年其新能…

AI数字人国内人工智能产业发展趋势

随着科技的不断进步,人工智能(Artificial Intelligence,简称AI)已成为当今社会的热门话题。作为一种复杂而高级的技术,人工智能在国内发展势头迅猛。本文将探讨AI数字人国内人工智能产业的发展趋势。 首先&#xff0c…