在Linux下安装GmSSL

2023-11-18

本文属于《GmSSL国密加密算法库使用系列教程》之一,欢迎查看其它文章。

一、关于GmSSL

GmSSL是一个开源的密码工具箱,支持SM2/SM3/SM4/SM9/ZUC等国密(国家商用密码)算法、SM2国密数字证书及基于SM2证书的SSL/TLS安全通信协议,支持国密硬件密码设备,提供符合国密规范的编程接口与命令行工具,可以用于构建PKI/CA、安全通信、数据加密等符合国密标准的安全应用。GmSSL项目是OpenSSL项目的分支,并与OpenSSL保持接口兼容。因此GmSSL可以替代应用中的OpenSSL组件,并使应用自动具备基于国密的安全能力。GmSSL项目采用对商业应用友好的类BSD开源许可证,开源且可以用于闭源的商业应用。

GmSSL项目由北京大学关志副研究员的密码学研究组开发维护,项目源码托管于GitHub。自2014年发布以来,GmSSL已经在多个项目和产品中获得部署与应用,并获得2015年度“一铭杯”中国Linux软件大赛二等奖(年度最高奖项)与开源中国密码类推荐项目。GmSSL项目的核心目标是通过开源的密码技术推动国内网络空间安全建设。

以上内容摘抄自GmSSL官网:http://gmssl.org/

大家都知道OpenSSL,主要是提供国际加密算法库。但是在最新的OpenSSL 1.1.1以上版本,已经对国密算法提供了支持。

OpenSSL、GmSSL这俩提供的国密算法库,去看了下代码,代码实现是不一样的,属于条条大路通罗马。

二、解决与系统OpenSSL冲突的问题

GmSSL是支持国密算法和标准的OpenSSL分支,也就是说GmSSL是在OpenSSL代码基础上添加的国密算法。

因此为了兼容OpenSSL,GmSSL编译后生成的so文件名称与OpenSSL一致,都是libcrypto.so。

可能存在的问题:

Linux上很多软件都依赖于系统中的OpenSSL库。若你编译安装的GmSSL版本,其基于的OpenSSL分支版本,与系统中的OpenSSL版本不一致,便会产生冲突,很容易导致这些软件不可用。

最简单有效的办法:将GmSSL编译为静态库。

GmSSL命令行工具,以及我们基于该静态库开发的程序,直接内部就集成了GmSSL的二进制码,不需要去查找库了,也就不会与系统中OpenSSL产生冲突。

在安装GmSSL时,安装到指定的目录下,如/usr/local/gmssl,与系统中OpenSSL路径保持独立。

这样,即从文件路径和运行时,两方面保证了GmSSL与OpenSSL不会冲突,并保持使用上的相互独立性。这的确是最完美的解决办法。

三、GmSSL源码准备

下载GmSSL源码:https://github.com/guanzhi/GmSSL

在这里插入图片描述

四、编译与安装GmSSL

以下测试环境为Ubuntu 16.04。

1、解压并进入目录

解压源码

unzip GmSSL-master.zip

进入源码目录

cd GmSSL-master/

2、编译选项

配置安装路径,编译为静态库

./config --prefix=/usr/local/gmssl --openssldir=/usr/local/gmssl no-shared

注:–prefix表示安装路径;no-shared 表示只编译静态库;默认生成64位库。
此条命令若出错,可参考https://blog.csdn.net/weixin_43716504/article/details/126095234,修改Configure、test/build.info文件后,即可解决。

3、编译

make

4、安装

make install

若报错:

Cannot create directory /usr/local/gmssl: No such file or directory

是因为当前用户无权限对该路径进行写入。

再次执行如下,即可解决。

sudo make install

GmSSL安装目录如下:

在这里插入图片描述

5、配置环境变量

在~/.bashrc文件中,添加GmSSL命令行工具路径。

vim ~/.bashrc

在文件末尾追加如下内容:

export PATH=$PATH:/usr/local/gmssl/bin

然后执行

source ~/.bashrc

输入命令,查看GmSSL版本

gmssl version -a

在这里插入图片描述

在这里插入图片描述

并且与OpenSSL不冲突,至此,GmSSL安装完毕。



若对你有帮助,欢迎点赞、收藏、评论,你的支持就是我的最大动力!!!

同时,阿超为大家准备了丰富的学习资料,欢迎关注公众号“超哥学编程”,即可领取。

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在Linux下安装GmSSL 的相关文章

  • 2023高教社杯全国大学生数学建模竞赛C题思路模型代码

    2023高教社杯全国大学生数学建模竞赛C题思路模型代码 一 国赛常用的模型算法 1 蒙特卡罗算法 该算法又称随机性模拟算法 是通过计算机仿真来解决问题的算法 同时可以通过模拟可以来检验自己模型的正确性 比较好用的算法 2 数据拟合 参数估计
  • Zotero文献管理工具使用教程-2

    1 打开word 2 选择zotero标签 3 点击Add Edit Citation 4 选择要导入文献的格式后点击OK 这里以GB T 7714 1987为例 5 鼠标光标选中要插入的位置 前边一定要有文字 之后点击2所框选位置 6 点
  • 关于置信区间、置信度的理解

    关于置信区间和置信度的理解 在网上找了两个相关的观点感觉讲的很好 恍然大悟 简单概括 参数只有一个是固定的不会变 我们用局部估计整体 参数95 的置信度在区间A的意思是 正确 采样100次计算95 置信度的置信区间 有95次计算所得的区间包
  • 【leetcode 524. 通过删除字母匹配到字典里最长单词】双指针,在不同字符串中同向查找

    解题思路 依旧是双指针 不过双指针在不同字符串中同向查找 且在使用双指针前需要对被查找集合做排序 1 根据题目要求 先将dictionary的字符串按照字符串的长度从大到小排序 且字符串符合字典序 进行排序 目的是为了接下查找时 dicti
  • 使用streamstring获取字符串string的子串

    最近优化代码 特别是在C 中获取string的字串 代码经常会遇到 非常有用且重复的功能函数 对这个功能 我之前一直用substr来获取字串 功能也非常强大 最近发现一个非常好用的stringstream 用它来实现substr的部分功能
  • Springboot整合RabbitMQ详解

    RabbitMQ 文章目录 RabbitMQ RabbitMQ的特点 AMQP AMQP模型 消息确认 AMQP是一个可编程的协议 RabbitMQ安装 Windows10安装 步骤 Spring整合AMQP 官方中文文档 GitHup翻译
  • Windows Server 2012 R2 百度创建AD域

    Windows Server 2012 R2 创建AD域 前言 我们按照下图来创建第一个林中的第一个域 创建方法为先安装一台Windows服务器 然后将其升级为域控制器 然后创建第二台域控制器 一台成员服务器与一台加入域的Win8计算机 环
  • Linux终端查看文件指令

    可以用cat查看文件文本内容 还可以用more命令查看 两者不同的是 cat是直接将内容全部显示出来 more支持翻页 如果文件过多可以一页页的展示 翻页可以通过按空格实现
  • Mysql:核心的数据库操作

    Mysql核心点 对于每一位研发同学 Mysql都是必须掌握的技能啦 基本的Mysql的操作 还是得很好的掌握的 一 Mysql 学习一个技术 一定要先去官网学习 Mysql官网 二 基本的查询 1 创建表并插入数据 创建表 CREATE
  • 基于MindSpore的YOLOv3-DarkNet53网络实现

    基于MindSpore的YOLOv3 DarkNet53网络实现 网络模型介绍 1 backbone Darknet 53 YOLOv3使用Darknet 53提取特征 其借鉴了Darknet 19结构 不同于Darknet 19的是 Da
  • Flutter开发遇到的问题

    一 在AndroidStudio4 1中没有 New Flutter Project 菜单 那是由于你没有安装Flutter插件 需要在setting的插件管理中添加 Flutter 和 dart 插件 二 Flutter SDK 安装参考
  • 微信小程序input禁止空格输入

    用户输入的时候 可能会有输入空格的情况 所以我们要利用简单的正则实时去除空格 利用数据双向绑定的特性同步当前input的value值 下面是源码 wxml
  • 基于SpringBoot的螺蛳粉销售系统计算机毕业设计源码70795

    摘 要 随着供给侧结构性改革的稳步实施 互联网 这一新的国家发展的重要战略手段通过 双创 不但改变了传统的供需关系 还为经济发展带来了新动能 它已经成为产业发展的新引擎 螺顿粉产业就是在 互联网 背景下应运而生且蓬勃发展的 但是 在经济全球
  • 寻你的人生 寻你的选择

    无论如何选择 只要是自己的选择 就不存在对错与后悔 过去的我不会让现在的我满意 现在的我也不会让未来的我满意 当面对前路坎坷 我知道既然当初有胆量去选 那么就该有勇气把后果来承担 有毅力把梦想坚持并实现 我们人生中最大的懒惰 就是当我们明知
  • SonarQube8.7使用配置

    一 sonarQube版本 二 安装 三 配置说明 1 设置检测规则 2 启用pdf输出 一 sonarQube版本 本体 sonarqube 8 7 1 42226版本 插件 sonar findbugs plugin 4 0 3 jar
  • 生成Android的keystore密钥

    打开cmd 进入Jdk的 安装目录下的bin文件夹 输入命令 keytool genkey alias android keystore keyalg RSA validity 20000 keystore android keystore

随机推荐

  • /dev/sdb1 已经挂载或 /mnt/mountpoint3 忙解决办法

    dev sdb1 已经挂载或 mnt mountpoint3 忙解决办法 在挂载硬盘分区的时候 会出现mount dev sdd1 already mounted or data3 busy或者是在执行格式化分区的时候也会出现 dev hd
  • 操作系统重点

    1 1 选择题 1 考研真题 单项选择题 单道批处理系统的主要缺点是 A CPU利用率不高 2 考研真题 单项选择题 提高单机资源利用率的关键技术是 D 多道程序设计技术 3 考研真题 单项选择题 并发性是指若干事件在 发生 A C 同一时
  • Qt智能指针之QScopedPointer

    内存释放的问题是C 中比较头疼的问题 合理的使用智能指针能有效的帮助我们减少忘记释放内存 导致的内存泄露问题 本文以Qt中的QScopedPointer为例 通过讲解其用法 从源码深度剖析其实现方式 QScopedPointer的使用原理比
  • IDEA中的“Deployment“ 将项目直接部署到服务器上

    ntelliJ IDEA中的 Deployment 工具栏是一个方便的工具 用于将你的项目直接部署到服务器上 这个工具栏提供了三种部署的方式 1 Web Server在本地电脑上 并且服务器运行目录也在项目目录下 2 Web Server在
  • 【读书笔记】浪潮之巅——公司史篇

    浪潮之巅 公司史 AT T 百年帝国 创立 1877贝尔电话公司 1984年反垄断被拆分 AT T 8家小贝尔公司 1996年重组 AT T 长途电话等电信服务业务 朗讯 专门做程控交换机等设备制造业务 因借钱给各公司买朗讯设备 2000年
  • centos实现集群之间ssh免密(最简单的ssh免密)

    master 1 在虚拟机命令界面输入 ssh keygen t rsa 然后持续回车键 2 ssh copy id 主机名 ssh copy id master ssh copy id slave1 slave1 ssh copy id
  • 811. 子域名访问计数

    网站域名 discuss leetcode com 由多个子域名组成 顶级域名为 com 二级域名为 leetcode com 最低一级为 discuss leetcode com 当访问域名 discuss leetcode com 时
  • 私有部署、重构企业软件,第四范式发布大模型“式说”

    大模型领域再添重要一员 4月26日 第四范式首次向公众展示其大模型产品 式说3 0 并首次提出AIGS战略 AI Generated Software 以生成式AI重构企业软件 式说将定位为基于多模态大模型的新型开发平台 提升企业软件的体验
  • GYM-102920-L. Two Buildings(决策单调性+分治)

    题目链接 题目大意 求一段序列的 h i h j j i 的最大值 step1 转化一下题意 h i h j j i h j h i j i 令a i h i b i h i 然后全部转化为两种坐标 i a i i b i 这样题目就转化成
  • 物联网技术周报第31期:Linux基金会宣布微内核项目Zephyr

    本文转载至 http www infoq com cn news 2016 02 iot weekly 31 utm campaign infoq content utm source infoq utm medium feed utm t
  • linux的开机启动和密码破解

    linux的开机启动 linux启动流程 Centos开机修改密码 kali开机修改密码 centso启动 rcx文件 chkconfig命令 centos给grub设置密码 压缩解压 gzip bzip2 tar tar gzip tar
  • 韦东山数码相框项目进度一

    数码相框进度一 项目需求分析 程序架构 点阵字符显示 参考文章 韦东山数码相框任务需求分析 项目需求分析 程序架构 1 为了提高程序的复用性 将应用程序分为两个进程 进程之间通过socket套接字进行通信 2 两个进程下通过多线程框架 完成
  • Hibernate框架详解(四)

    Hibernate查询方式 1 对象导航查询 根据id查询某个班级 再查询这个班级里面的所有学生 2 OID查询 根据id查询某一条记录 返回对象 3 HQL查询 利用Query对象 写HQL语句实现查询 4 QBC查询 利用Criteri
  • Clion开发Stm32之编译不通过问题

    编译报错的情况 通过排查发现是由于项目路径存在中文的原因导致的 将项目移植不含中文目录问题得到解决 记录一下错误
  • 如何在Eclipse中的Dynamic web project工程中运行Apache服务器

    第一步 点击新建 其他 如图 2 选择server 下一步 如图 3 选择Apache服务器 4 选择本地已经下载的Apache对应的版本 完成 5 新建一个测试Dynamic webproject工程 6 在webcontent中随便建立
  • C++基础一:内存分区和引用

    1 内存分区模型 C 程序在执行时 将内存大方向划分为4个区域 代码区 存放函数体的二进制代码 由操作系统进行管理的 全局区 存放全局变量和静态变量以及常量 栈区 由编译器自动分配释放 存放函数的参数值 局部变量等 堆区 由程序员分配和释放
  • 01虚拟机下配置linux的网络上网(包括ssh,gcc,g++的安装)

    1 选择模式 若你是新装虚拟机时 这个界面会依次安装时会直接有 到这一步选择添加 gt 选择网络适配器 点击桥接模式和复制物理网络 若你已经安装好虚拟机 可以点击虚拟机上方的虚拟机 M 然后也会出现这个界面 操作和上面一样 2 安装vim
  • [读论文]深入研究对抗样本和黑盒攻击的可转移性

    论文题目 深入研究对抗样本和黑盒攻击的可转移性 本文内容来源于论文 Delving into Transferable Adversarial Examples and Black box Attacks 论文地址 arxiv 1611 0
  • OpenGL总结4-3D纹理贴图坑

    OpenGL在纹理贴图的时候用到了多个坐标系 最头痛的是两个 一个是顶点所在的顶点坐标系 另一个是纹理所在的纹理坐标系 顶点坐标系与纹理坐标系不同的地方在于 当纹理导入之后 纹理在纹理坐标系中的坐标始终保持 0 1 内 所以在进行纹理变换的
  • 在Linux下安装GmSSL

    本文属于 GmSSL国密加密算法库使用系列教程 之一 欢迎查看其它文章 在Linux下安装GmSSL 一 关于GmSSL 二 解决与系统OpenSSL冲突的问题 三 GmSSL源码准备 四 编译与安装GmSSL 1 解压并进入目录 2 编译