LINUX使用OpenSSL进行签名

Posted 柳鲲鹏

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LINUX使用OpenSSL进行签名相关的知识,希望对你有一定的参考价值。

  其实使用gpg也能完成任务。因为看到某个网页有介绍这种方法,于是就记录下。

  • 原理图

  •  创建私钥
# 创建私钥
openssl genrsa -out key.pri -f4 2048

# 查看私钥
openssl rsa -inform PEM -in key.pri -text
  • 导出公钥
# 导出公钥
openssl rsa -inform PEM -outform PEM -in key.pri -out key.pub -pubout

# 查看公钥
cat key.pub
  • 方法1:私钥签名、公钥校验

测试发现方法1与方法2的sig文件不同。所以要分开。

# 签名
openssl dgst -sha256 -out file.sig -sign key.pri -keyform PEM file.txt

# 查看签名
od -v -An -t x1 file.sig

# 公钥校验
openssl dgst -sha256 -keyform PEM -verify key.pub -signature file.sig file.txt
  • 方法2:私钥签名、公钥校验
# 私钥签名
openssl dgst -sha256 -binary -out file.sha256 file.txt
openssl rsautl -out file.sig -sign -inkey key.pri -in file.sha256

# 查看签名
od -v -An -t x1 file.sig

# 计算信息摘要
openssl rsautl -out file.rec -inkey key.pub -in file.sig -pubin -verify

# 查看信息摘要
od -v -An -t x1 file.rec

# 计算原文件f的信息摘要。
openssl dgst -sha256 -binary -out file.sha256 file.txt

# 查看
od -v -An -t x1 file.sha256

以上是关于LINUX使用OpenSSL进行签名的主要内容,如果未能解决你的问题,请参考以下文章

怎么在windows上openssl颁发代码签名证书?

使用 openssl dgst 验证文件签名

Java代码实现文件添加数字签名验证数字签名

使用 openssl 对文件进行数字签名

Java-文件加密传输(摘要+签名)

使用 HMAC 或 OpenSSL 进行 URL 签名