![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
OpenSSL
文章平均质量分 86
henter
这个作者很懒,什么都没留下…
展开
-
在 CentOS 7 Linux 平台上编译 OpenSSL 3.0.0
本文介绍了在 CentOS 7 Linux平台上编译 OpenSSL 3.0.0的方法和过程。原创 2021-11-30 17:21:22 · 3743 阅读 · 3 评论 -
OpenSSL 1.1.1 系列中的 SM2 解密缓冲区溢出漏洞 CVE-2021-3711 介绍
OpenSSL 维护者在2021年8月24日发布了安全提示,披露了代号为 CVE-2021-3711 和 CVE-2021-3712 的两个漏洞。其中CVE-2021-3711 的问题来自 SM2 解密缓冲区溢出,该漏洞存在于 OpenSSL 1.1.1 系列中 1.1.1k 及之前的版本,在8月12日由 John Ouyang 报告,现在已经由 Matt Caswell 修复,OpenSSL 维护者建议使用 OpenSSL 1.1.1 系列的用户尽快升级到 1.1.1l (注意l是字母L的小写形式...原创 2021-08-29 21:38:33 · 4439 阅读 · 0 评论 -
在 64 位 Win10 上使用 VS 2019 编译 OpenSSL 3.0.0 alpha6
在 2020 年 8 月 6 日,OpenSSL 官网上发布了 OpenSSL 3.0.0 alpha6 测试版。本文介绍一下在 64 位 Win10 上使用 Visual Studio Community 2019 编译它的过程:1)到 OpenSSL 官网下载 openssl-3.0.0-alpha6.tar.gz 文件并解压缩,在 NOTES-Windows.txt 文件中介绍了在 Windows 平台上的编译方法;2)到 http://strawberryperl.com 网站...原创 2020-09-28 21:46:22 · 2393 阅读 · 4 评论 -
OpenSSL 3.0 简介(4)
先介绍一些概念:库上下文(Library Context) 库上下文是一个在 OpenSSL 3.0 版源码中定义的不透明的结构体,在其内部保存全局性的数据。当前对这个结构体的使用,仅限于用来保存核心用到的全局数据,将来可能会做扩展,将其他存在的全局数据也放进去。一个应用程序可以创建和销毁一个或多个供核心使用的库上下文。如果应用程序不创建库上下文,这时一个内部默认的库上下文将被使用。 创建和销毁库上下文的函数分别是:OPENSSL_CTX *OPENS...原创 2020-06-16 23:27:15 · 1959 阅读 · 0 评论 -
OpenSSL 3.0 简介(3)
OpenSSL 3.0 版的构成如下图所示: 从图中可以看出,OpenSSL 包含以下组成部分:应用(例如具有证书颁发功能的 CA)、常见服务(包括:X.509 证书创建与解析、ASN.1 编解码、BIO、EVP 等)、协议实现(包括 TLS、DTLS、TS(时间戳)、OCSP 等)、核心及多个提供者(一般包含四个提供者:默认提供者、FIPS 提供者、引擎提供者、遗留提供者。第三方可以自行实现更多的提供者)。 为了编译和安装 OpenSSL 3.0,应参考...原创 2020-06-16 22:06:26 · 4195 阅读 · 0 评论 -
OpenSSL 3.0 简介(2)
以下概念来自 FIPS 140 标准:1)POST (Power On Self Test),即“上电自检”;2)KAT (Known Answer Tests),即“已知答案测试”,是指在输入和对应的输出值已知的情况下,检查一个程序在获得输入固定值后,输出值是否与已知的对比值一致;3)CSP (Critical Security Parameters),即“关键安全参数”,例如密钥就属于CSP;4)State Machine,即“状态机”。 OpenSSL 中引入...原创 2020-06-15 23:11:26 · 2604 阅读 · 0 评论 -
OpenSSL 3.0 简介(1)
注:尽管OpenSSL 3.0 版的设计原则说明文档(https://www.openssl.org/docs/OpenSSL300Design.html)写得比较晦涩,但还是建议有条件的读者去仔细阅读它。本文提供了一个针对该文档的比较模糊的讲述,目的是让读者能对它有一个粗略的了解。在2020年4月23日,OpenSSL管理委员会和OpenSSL技术委员会发布了OpenSSL 3.0 Alpha1 版本,Alpha 1版本包含基本的功能加上基本的FIPS(Federal Information Proc原创 2020-06-15 21:03:20 · 8822 阅读 · 0 评论 -
Compute SM2 encryption and decryption by invoking EVP interface in OpenSSL 1.1.1
How to compute SM2 signature and verify it is introduced in the previous article. In this post a demo of performing SM2 encryption and decryption is provided:/**********************************...原创 2020-05-01 22:16:37 · 2242 阅读 · 9 评论 -
Compute SM2 signature and verify it by invoking EVP interface in OpenSSL 1.1.1
SM2 algorithm is supported in OpenSSL 1.1.1. A rough introduction on SM2 operation is given in: https://www.openssl.org/docs/manmaster/man7/SM2.html . But it is not sufficient for learners to ...原创 2020-04-27 23:33:52 · 2881 阅读 · 35 评论 -
使用 OpenSSL 命令行进行 ECC 签名及验签
首先查看一下 OpenSSL 内建了哪些椭圆曲线,使用命令为:openssl ecparam -list_curves 选择一条椭圆曲线创建 ECC 公私钥对,这里使用 secp256k1,执行命令:openssl ecparam -name secp256k1 -genkey -out ec.key 可以用文本编辑器打开 ec.key 文件...原创 2019-12-29 22:49:52 · 11202 阅读 · 14 评论 -
在 64 位 Win10 上使用 VS 2019 编译 OpenSSL-1.1.1d
到 OpenSSL 官网 https://www.openssl.org/ 下载 openssl-1.1.1d.tar.gz ,本文中将该压缩文件中 openssl-1.1.1d 子目录中所有的文件解压到 d:\OpenSSL\openssl-1.1.1d 路径下。 编译 OpenSSL 源代码需要用到 C 语言编译器、Perl 语言解释器、汇编编译器,前两项是必选...原创 2019-11-22 22:13:47 · 7572 阅读 · 10 评论 -
使用 OpenSSL 对 Octet String 类型数据进行 ASN.1 编码和解码
在 ASN.1 编码规则中,对于 Octet String 类型数据编码的方式是比较简单的,编码结果由三部分级联组成,如下图: 其中标志位取值为0x4,负载部分的值就是原始的 Octet String 数据。 调用 OpenSSL 对 Octet String 类型数据进行 ASN.1 编码和解码,应使用 i2d_ASN1_OCTET_STRIN...原创 2019-10-31 20:43:42 · 4913 阅读 · 3 评论 -
使用 OpenSSL 时一定要注意不同版本之间的差异
OpenSSL 常见的一些版本及受支持情况如下表所示:OpenSSL版本 官方支持情况 0.9.8 系列 不再支持 1.0.0 系列 不再支持 1.0.1 系列 不再支持 1.0.2 系列 将被支持到 2019 年 12 月 31 日 1.1.0 系列 只做安全修复,到 2019 年 9 月 11 日停止支持 1.1....原创 2019-08-08 23:23:11 · 30289 阅读 · 3 评论 -
Windows 下使用 OpenSSL 命令行创建包含 subjectAltName 扩展项的数字证书
1. CA 的基本原理简介(了解相关背景知识的读者请跳过这一部分) 我们回想一下在生活中,两个以前从未谋面的人如何核实对方的身份。由于每一个公民都有派出所颁发的身份证,两个人只要通过查看对方的身份证,就可以大体上知道对方是谁。这个验证身份的过程如下图: 在互联网上,识别陌生实体的思路与上述过程类似。首先建立一个有公信力的认证机构 CA(即Certificate...原创 2019-07-28 23:57:29 · 5270 阅读 · 0 评论 -
基于OpenSSL 1.1.1版实现的SM2加密与解密C程序
OpenSSL 1.1.1 版提供了对国密 SM2 算法的支持。对于 SM2 加解密算法,在源码的 crypto/sm2 目录下,sm2_crypt.c 文件中实现了 SM2 加密与解密。OpenSSL源码是很好的学习范例,但是 sm2.h, sm3.h, sm4.h 这些头文件是放在源码的 crypto/include/internal 目录下,这就导致用户不能直接调用到 sm2_cry...原创 2018-12-12 12:47:18 · 16683 阅读 · 52 评论 -
基于OpenSSL 1.1.1版实现的SM2签名与验签C程序
OpenSSL 1.1.1 版提供了对国密 SM4、SM3、SM2 算法的支持。对于 SM2 算法,在源码的 crypto/sm2 目录下,sm2_sign.c 文件中实现了 SM2 签名与验签,sm2_crypt.c 文件中实现了 SM2 加密与解密,这些源码是很好的学习范例。但是sm2.h, sm3.h, sm4.h 这些头文件是放在源码的 crypto/include/inter...原创 2018-11-20 22:08:10 · 14044 阅读 · 90 评论 -
在 64 位 CentOS 6.9上编译 OpenSSL 1.1.1 (2)
在前一篇博文中介绍了在 64 位 CentOS 上编译 OpenSSL 1.1.1 版的过程,在本篇中介绍一下编译后文件的分布。 编译时曾使用指令 ./config --prefix=/usr/local/openssl-1.1.1 指定了编译后文件的存放位置,现在到 /usr/local/openssl-1.1.1 路径下,查看一下有哪些文件及子目录,发现子目录分布的情况如下:...原创 2018-09-20 09:38:23 · 1577 阅读 · 0 评论 -
在 64 位 CentOS 6.9上编译 OpenSSL 1.1.1 (1)
OpenSSL 1.1.1 正式版于 2018 年 9 月发布了,在官网 https://www.openssl.org 上已提供了文件 openssl-1.1.1.tar.gz 的下载。为了尝试在 64 位的 CentOS 6.9 上编译源文件,先用以下命令查看一下 GCC 的版本:gcc --versin 结果为 4.4.7。再用以下命令查看一下 Perl 的版本:perl...原创 2018-09-19 22:33:44 · 9336 阅读 · 4 评论 -
用VS 2010编译带调试符号(debugging symbols)的OpenSSL库文件
本文介绍了如何用VS 2010编译带调试符号(debugging symbols)的OpenSSL库文件原创 2013-11-19 15:50:21 · 2154 阅读 · 0 评论 -
CentOS下能抗Heartbleed攻击的OpenSSL最低版本不是1.0.1g
OpenSSL官网上指出能抗Heartbleed攻击的OpenS原创 2014-04-15 16:56:17 · 1728 阅读 · 0 评论 -
C语言实现的SM2数字签名验证
在 goldboar 写的 SM2 签名及验签函数( http://download.csdn.net/detail/goldboar/3833072)基础上,改写了一个纯粹用于验证SM2签名的函数。原创 2014-07-15 15:31:56 · 12636 阅读 · 6 评论 -
OpenSSL中提供的base64编解码函数
(本文内容针对 1.0.1c 版本的OpenSSL) 对于 base64 编码,OpenSSL在 evp.h 中声明了相关函数,在 encode.c 中给出了实现。有两种方法:1. 调用 EVP_EncodeBlock() 函数;用这种方法生成的编码需要解码时,应该调用 EVP_DecodeBlock()。2. 依次调用 EVP_EncodeInit(), EVP_Enc原创 2013-03-06 15:27:46 · 6356 阅读 · 4 评论 -
修改OpenSSL默认编译出的动态库文件名称
本文介绍了如何改变 OpenSSL 编译后生成动态库文件的默认名。原创 2014-09-26 10:10:41 · 4654 阅读 · 0 评论 -
ASN.1 Encode an Object Identifier (OID) with OpenSSL
Introduce how to ASN.1 encode OID (Object Identifier) with OpenSSL.原创 2014-10-13 10:13:35 · 3489 阅读 · 4 评论 -
64位Win7下用VS2010编译OpenSSL
介绍在64位Windows系统下编译OpenSSL的方法原创 2012-12-21 16:39:10 · 6288 阅读 · 1 评论 -
在CentOS 6.8上编译OpenSSL 1.0.2k
本文介绍了在CentOS 6.8中使用GCC编译OpenSSL 1.0.2k的方法。原创 2017-03-21 18:20:28 · 2459 阅读 · 0 评论 -
Windows上使用VS 2010编译OpenSSL 1.1.1-pre6(该版本支持SM2、SM3、SM4算法)
OpenSSL 官网在 2018 年 5 月 1 日发布了 OpenSSL 1.1.1-pre6 版。在该版本的 OpenSSL 中,增加了对 TLS v1.3 的支持,还增加了对中国国密算法 SM2、SM3、SM4的支持。 下载并解压 openssl-1.1.1-pre6.tar.gz ,可以看到在 crypto 目录下包含 sm2、sm3、sm4 三个子目录,各子目录下包含对应国...原创 2018-05-21 14:48:24 · 4857 阅读 · 0 评论 -
调用 OpenSSL 1.1.1 计算 SM3 杂凑值的一个简单示例
在前面的博文中介绍了如何在 Windows 平台上编译 OpenSSL 1.1.1, 在这个版本中增加了对国密 SM2、SM3、SM4算法的支持,本文介绍一下如何调用它计算 SM3 杂凑值。...原创 2018-06-18 20:23:30 · 9601 阅读 · 17 评论 -
OpenSSL 中的 BIGNUM 学习笔记(针对1.1.1版本)
本文针对 OpenSSL 1.1.1 版,以下内容大部分来自对 \OpenSSL\html\man3\ 目录下 BN_ 开头的 html 文件的翻译。-----------------------------------------------BIGNUM 的定义 在 bn_lcl.h 中:struct bignum_st { BN_ULONG *d...原创 2018-08-16 17:41:58 · 11584 阅读 · 5 评论 -
列举 OpenSSL 中内建的椭圆曲线
要查看 OpenSSL 中内建的椭圆曲线,有两种方式。第一种是使用命令行,命令是:openssl ecparam -list_curves 。第二种是自己编写程序,调用 OpenSSL 中的函数。 对于第二种方式,详细介绍如下:这里使用的 OpenSSL 版本是 1.1.1,在 OpenSSL 源码的 include\openssl\ec.h 中定义了结构体 EC_built...原创 2018-08-22 10:42:20 · 3799 阅读 · 0 评论 -
OpenSSL 中的 EVP_MD 学习笔记(针对1.1.1版本)
本文针对 OpenSSL 1.1.1 版,以下内容大部分来自对 \OpenSSL\html\man3\ 目录下 EVP_MD_ 开头的 html 文件的摘录和翻译。-----------------------------------------------EVP_MD_CTX 和 EVP_MD 的定义在 OpenSSL 1.1.1 源码 \crypto\evp\evp_locl...原创 2018-08-21 10:51:46 · 13220 阅读 · 0 评论 -
Extract public key ASN.1 encode from X.509 certificate with OpenSSL
X509_get0_pubkey_bitstr( ) function is declared in x509.h of OpenSSL source code set. Let's have a look at it:ASN1_BIT_STRING *X509_get0_pubkey_bitstr(const X509 *x); When the public key ASN....原创 2018-09-25 11:02:46 · 1242 阅读 · 0 评论 -
在Visual Studio命令提示符界面下编译链接OpenSSL自带的示例程序
注意:本文的内容不是介绍如何在Windows下编译OpenSSL,而是编译好以后,如何在Windows命令提示符界面下编译链接OpenSSL自带的一个示例程序base64.c。以前已经把下载的 openssl 1.0.1c 源代码压缩包解压到了 F:\openssl 路径下,并在64位Win7下使用VS2010编译生成了64位的库文件。发现 F:\openssl\demos\e原创 2013-01-24 17:47:38 · 6260 阅读 · 0 评论