CentOS7安装GmSSL过程记录

news2024/11/26 8:44:20

近期因为项目需要上区块链,在集成过程中证书选择了国密SM2,于是开启了入坑之旅,由于整个过程反复多次,我的记录也可能存在遗漏,只能尽力记录,这也是我为什么熬夜也要写下这篇记录!

环境说明
VirtualBox 7.0Oracle VM虚拟机,主机系统是64位windows10 21H2 家庭中文版。
CentOS 7.9
GmSSL 2.5.4建议该版本
make 3.82CentOS7.9系统自带
GCC 4.8.5
perl 5.36.0官方稳定版,不是最新版本。

写在开始

我们一般都喜欢官方网站去下载安装包并查看相关资料进行操作,但是目前 GmSSL官网 比较混乱,主要体现在提供的操作方法与版本混乱,给新人造成困惑。

1 GmSSL v2安装包

建议大家下载 GmSSL2.5.4 版本进行安装,主要是搜索资料基本都是这个版本的,包括官网文档的快速上手以及编译安装过程都是针对该版本的。注意,目前官网快速上手上挂的zip下载GmSSL-master.zip是最新稳定版3.0.0,但是该版本从目录结构、编译安装和gmssl命令都与V2版本有很大区别,新版本编译安装采用的是cmake方式,根目录下有CMakeLists文件,执行编译报错后科学搜索不到太多相关信息,可能还是用V2版本人员较多。
如下图所示官方github上master分支是3.0版本,选择GmSSL v2分支就是2.0+版本。
GmSSL v2版本下载位置
下载后上传至/usr/local/并解压。

2 依赖环境准备

2.1 gcc

查看是否安装

gcc -v

安装

yum install gcc gcc-c++

2.2 openssl

查看是否安装

openssl version

安装

yum install  -y openssl  openssl-devel

3 安装GmSSL

按照 官方资料 进行操作,接下来就是报错与修复的过程了。
官方文档截图

3.1 ./config

进入之前下载并解压的GmSSL v2根目录

cd /usr/local/GmSSL-GmSSL-v2

执行./config

./config

这个时候可能就会报错提示

"glob" is not exported by the File::Glob module

那么,找到安装根目录下的Configure文件(18行)和./test/build.info文件(339行),如下:

use if $^O ne "VMS", 'File::Glob' => qw/glob/;

调整在" qw/ “后面加分号” :",如下:

use if $^O ne "VMS", 'File::Glob' => qw/:glob/;

3.2-1 make

这一步基本没遇到过问题。

make

3.2-2 make test

这一步可能又会报和3.1一样的错误,只是不同的文件,位于./test/run_tests.pl文件(19行),按照3.1中方法修复即可。修复后,再次执行可能还会有报错,但是可以先忽略继续向下执行 3.2-3 。

make test

3.2-3 sudo make install

sudo make install

执行完毕后,可能会报错,如下:

install ./doc/apps/CA.pl.pod -> /usr/local/share/man/man1/CA.pl.1
/bin/sh: line 4: pod2man: command not found
make: *** [install_man_docs] Error 1

暂时忽略,只是一个文档错误。

3.3 完成安装

查看gmssl是否安装成功

gmssl version

可能会报错,如下

gmssl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory

这是因为某些文件连接没有建立成功。

3.3-1 查看相关连接

ldd /usr/local/bin/gmssl

结果发现两个文件未找到(not found),如下:

	linux-vdso.so.1 =>  (0x00007ffda9fbd000)
	libssl.so.1.1 => not found
	libcrypto.so.1.1 => not found
	libdl.so.2 => /lib64/libdl.so.2 (0x00007fab91d04000)
	libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fab91ae8000)
	libc.so.6 => /lib64/libc.so.6 (0x00007fab9171a000)
	/lib64/ld-linux-x86-64.so.2 (0x00007fab91f08000)

先通过find命令找到这两个文件安装位置。

find / -name libssl.so.1.1

然后执行连接操作。

ln -s /usr/local/lib64/libssl.so.1.1 /usr/lib64/libssl.so.1.1

另一个文件libcrypto.so.1.1也重复操作,执行过程效果截图,如下:
执行效果
最后再一次执行查看连接,结果如下:

执行效果2

3.3-2 安装成功

查看gmssl版本

gmssl version

效果如下图所示:
安装成功
接下来大家就可以按照官网文档或者搜索资料,进行证书生成了!!!

祝各位一切顺利!

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

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

相关文章

[附源码]Python计算机毕业设计Django的玉石交易系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,我…

【Pandas数据处理100例】(九十三):Pandas使用all()函数判断DataFrame中的元素是否都为True

前言 大家好,我是阿光。 本专栏整理了《Pandas数据分析处理》,内包含了各种常见的数据处理,以及Pandas内置函数的使用方法,帮助我们快速便捷的处理表格数据。 正在更新中~ ✨ 🚨 我的项目环境: 平台:Windows10语言环境:python3.7编译器:PyCharmPandas版本:1.3.5N…

数据库事务、连接与java线程之间的关系

最近在处理事务和多线程时,比较困扰数据库事务,数据库连接以及java线程之间的关系。 问题1:事务和连接的关系? 回答:对于数据库事务来说先有一个连接,才能有事务,一个连接里可以有一次或多次事…

[附源码]计算机毕业设计SpringBoot计算机相关专业考研资料管理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

二叉树的遍历与构建问题

目录 一、二叉树遍历 二、从前序与中序遍历序列构造二叉树 三、从中序遍历与后序遍历序列构造二叉树 一、二叉树遍历 编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以指针方式存储)。 例如如下的…

卡塔尔世界杯壁纸已上线,下载的壁纸清晰度不够?教你修复清晰

当我们无法走入现场感受这场体育盛宴,就用一张张世界杯壁纸回味世界杯的动人瞬间吧,在家云看球,换上卡塔尔世界杯壁纸,用上表情包一样可以过把瘾,一起看看如何获得卡塔尔世界杯的壁纸和表情包吧! 如何获得…

基于PLC的矿泉水自动瓶装控制系统设计

目 录 1 绪论 1 1.1研究背景及意义 1 1.2研究现状 2 1.2.1 可编程序逻辑控制器 2 1.2.2 我国自动瓶装存在的问题 2 1.3研究主要内容 3 2 矿泉水自动瓶装总体设计 5 2.1任务的分析 5 2.2硬件方案设计 5 2.3软件方案设计 6 2.3.1经验设计法 6 2.3.2逻辑设计法 6 3 元件器件选择 8…

[附源码]SSM计算机毕业设计学术文献分享网站JAVA

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

Spring IoC依赖注入-6

1. 依赖注入的模式和模型: Spring 提供了哪些依赖注入的模式和类型? 手动模式 - 配置或者编程的方式,提前安排注入规则 XML资源配置元信息Java 注解配置元信息API 配置元信息 自动模式 - 实现方提供依赖自动关联的方式,按照内建的注入规则 Autowiring …

拓扑排序算法

背景 拓扑排序是啥意思? 拓扑排序是指: 将有向无环图(DAG)展开为一维的执行序列。DAG顾名思义就是有方向的图,下面这张图就简单说明了啥是有向无环图。一般人可能用到这个算法的情况不多,但是刷leetcode的课程表问题肯定遇到过,其…

ShardingJdbcⅡ

序言 在前文的基础上继续梳理一下分片的相关信息.基于shardingsphere-sharding-api:jar:5.2.1的源码,感觉ShardingJdbc的版本变动频繁且比较大cuiyaonan2000163.com 切入口是如下的内容,吐槽下官网的API文档不太够能把事情说清楚: 分片算法 从上面的自定义分片的可选类型我们…

我有两个列表,现在需要找出两个列表中的不同元素,怎么做?

点击上方“Python爬虫与数据挖掘”,进行关注回复“书籍”即可获赠Python从入门到进阶共10本电子书今日鸡汤秦时明月汉时关,万里长征人未还。大家好,我是皮皮。一、前言前几天在帮助粉丝解决问题的时候,遇到一个简单的小需求&#…

[附源码]Python计算机毕业设计Django的物品交换平台

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

【Pandas数据处理100例】(八十五):Pandas将DataFrame数据转化成字典数据

前言 大家好,我是阿光。 本专栏整理了《Pandas数据分析处理》,内包含了各种常见的数据处理,以及Pandas内置函数的使用方法,帮助我们快速便捷的处理表格数据。 正在更新中~ ✨ 🚨 我的项目环境: 平台:Windows10语言环境:python3.7编译器:PyCharmPandas版本:1.3.5N…

git push出现git@github.com: Permission denied (publickey) 解决办法

故障现象 ➜ LKExtentionKit git:(master) ✗ git push --set-upstream origin master gitgithub.com: Permission denied (publickey). 错误:无法读取远程仓库。请确认您有正确的访问权限并且仓库存在。 解决办法 第1步,验证邮箱与GitHub注册时输入的是否一致 …

计算机网络(详解)

文章目录一,计算机网络⑴ 局域网(LAN)1) 环状拓扑结构2) 星型拓扑结构3) 总线拓扑结构⑵ 城域网(MAN)⑶ 广域网(WAN)二,互联网⑴ 互联网是一种计算机网络⑵ 互联网的工作模式⑶ 互联…

Leetcode 907.子数组的最小值之和(中等)

一、题目 1、题目描述 给定一个整数数组 arr,找到 min(b) 的总和,其中 b 的范围为 arr 的每个(连续)子数组。 由于答案可能很大,因此 返回答案模 10^9 7 。 示例1: 输入:arr [3,1,2,4] 输…

【Paper】2022_离散时间多智能体系统编队-包围控制研究_李博凡

离散时间多智能体系统编队-包围控制研究_李博凡 文章目录第四章 基于间歇控制的离散时间多智能体系统编队-包围控制4.1 引言4.2 基于状态反馈的离散时间间歇多智能体系统编队-包围控制4.2.1 模型描述4.2.2 稳定性分析4.3 基于观测器的离散时间间歇多智能体系统编队-包围控制4.3…

2022最全Hbuilder打包成苹果IOS-App的详解

本文相关主要记录一下使用Hbuilder打包成苹果IOS-App的详细步骤。 介绍一下个人开发者账号: 再说下什么是免费的苹果开发者账号,就是你没交688年费的就是免费账号,如果你想变成付费开发者账号,提交申请付费就行,账号都…

qt中Qtcpserver服务端_qt websocket

0.前言 本文主要讲解 Qt TCP 相关接口的基本应用,一些实践相关的后面会单独写。 TCP 协议是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP 通过检验和、序列号、确认应答、重发控制、连接管理以及窗口控制等机制实现可靠性传输。 TCP 通过三次握手来…