CentOS7安装GmSSL过程记录

本文详细记录了在CentOS7.9环境下安装配置GmSSL 2.5.4版本,并解决安装过程中遇到的问题,如配置错误和依赖缺失等。

近期因为项目需要上区块链,在集成过程中证书选择了国密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

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

祝各位一切顺利!

<think> 首先,用户的问题是:“我想查找在CentOS 7系统上安装GMSSL的方法 请问CentOS 7系统安装GMSSL的方法”。这明确要求提供在CentOS 7安装GMSSL的步骤。 回顾系统级指令: - 所有行内数学表达式必须使用$...$。 - 独立公式使用$$...$$并单独成段。 - LaTeX语法正确。 - 使用中文回答。 - 生成相关问题。 - 回答中引用的段落末尾自然地添加引用标识。 - 回答结构清晰,帮助用户逐步解决问题,保证真实可靠。 用户提供了站内引用: - [^1]:描述了在Centos7编译安装Gmssl后运行报错:找不到libssl.so.1.1。 - [^2]:给出了编译安装GmSSL的命令:下载、解压、配置、编译安装。 - [^3]:记录CentOS7安装GmSSL过程,提到环境如VirtualBox、CentOS 7.9、GCC 4.8.5等。 - [^4]:展示了gmssl的使用命令如生成密钥。 用户说:“上述引用仅供参考,并不是用户真正的需求,请尽可能多的参考用户上一次的问题和你的回答。” 但在这个对话中,没有“上一次的问题”,因为我作为AI是新回复的。用户可能指的是在之前的上下文,但这里没有提供。所以,我应该基于当前问题。 用户当前问题是关于安装方法,所以我需要专注于提供安装步骤。 从引用中提取关键信息: - 安装GmSSL通常涉及编译安装。 - 步骤包括下载源代码、配置、编译安装。 - 可能遇到依赖问题或运行时错误,如缺少共享库。 结构化回答: 1. **介绍**:简要说明GmSSL是什么和安装方法。 2. **准备依赖**:确保系统有必要的工具和库。 3. **下载和解压源代码**。 4. **编译安装**:运行配置、编译安装命令。 5. **验证安装**:检查是否安装成功。 6. **常见问题解决**:如引用[^1]中的错误,提供解决方案。 7. **相关问题生成**:根据指令,生成相关问题。 确保回答真实可靠:基于引用和一般Linux知识。引用[^2]提供了基本命令,引用[^3]提到环境,引用[^4]展示使用。 步骤详细化: - 准备环境:安装开发工具,如gcc、make、perl等。 - 下载源代码:使用wget下载,解压。 - 配置:./config - 编译安装:make && make install - 设置环境变量或处理库路径(如果遇到错误)。 对于错误“error while loading shared libraries: libssl.so.1.1”,解决方案可能是设置LD_LIBRARY_PATH或使用ldconfig。 回答使用中文。 生成相关问题: - 如“如何解决安装后运行gmssl时的共享库错误?”或“GmSSL的常见使用命令是什么?” 最终回答结构: - 分步指南。 - 代码块用```包裹,如命令。 - 引用标识添加在相关内容后。 - 相关问题部分作为最后一部分。 </think> ### CentOS 7系统安装GMSSL的方法 GMSSL是一个支持国密算法(如SM2、SM3、SM4)的加密库,在CentOS 7系统上安装通常采用编译安装方式。以下是详细、可靠的安装步骤,基于通用Linux实践和参考文档[^2][^3]。整个流程包括环境准备、下载源码、编译安装和验证。安装前请确保以root用户或sudo权限操作。 #### 1. **准备依赖环境** 在安装前,需安装必要的开发工具和库: ```bash # 更新系统包 yum update -y # 安装编译工具链(gcc, make等)和依赖库 yum groupinstall "Development Tools" -y yum install wget openssl-devel perl -y ``` 这确保系统具备编译条件,避免常见错误[^3]。 #### 2. **下载并解压GMSSL源代码** 从官方GitHub仓库下载源码(以GmSSL v0.1为例): ```bash # 下载源码包 wget https://codeload.github.com/guanzhi/GmSSL/tar.gz/refs/tags/gmbrowser-v0.1 # 解压并进入目录 tar -zxvf GmSSL-gmbrowser-v0.1.tar.gz cd GmSSL-gmbrowser-v0.1 ``` 如果下载链接失效,请访问[GmSSL GitHub仓库](https://github.com/guanzhi/GmSSL)获取最新版本[^2]。 #### 3. **配置、编译安装** 运行配置脚本并编译安装: ```bash # 配置编译选项(默认路径为/usr/local/) ./config # 编译安装 make && make install ``` 这会将GMSSL安装到`/usr/local/bin`和`/usr/local/lib`目录。编译过程可能需要5-10分钟,取决于系统性能[^2]。 #### 4. **设置环境变量和库路径** 安装后需更新系统库缓存,避免运行时错误: ```bash # 刷新动态链接库缓存 ldconfig # 可选:添加GMSSL到PATH(如果不在默认路径) echo 'export PATH=$PATH:/usr/local/bin' >> /etc/profile source /etc/profile ``` 此步骤解决常见的共享库错误,如`libssl.so.1.1: cannot open shared object file`[^1]。 #### 5. **验证安装** 运行以下命令检查是否安装成功: ```bash # 查看GMSSL版本 gmssl version # 测试SM2密钥生成(示例命令) gmssl ecparam -genkey -name sm2p256v1 -out user.key ``` 如果输出GMSSL版本信息(如`GmSSL 0.1`),则安装成功。否则,检查`ldconfig`是否执行[^4]。 #### 常见问题解决 - **错误:`gmssl: error while loading shared libraries`** 运行`ldconfig`后重试。若问题持续,手动链接库: ```bash ln -s /usr/local/lib/libssl.so.1.1 /usr/lib64/libssl.so.1.1 ldconfig ``` - **编译失败** 确保已安装所有依赖(如`openssl-devel`),并检查GCC版本(需≥4.8.5)[^3]。 安装完成后,GMSSL可用于证书管理、加密通信等场景。例如,生成SM2证书请求: ```bash gmssl req -new -key user.key -out user.req ```
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值