当前位置: 首页 > 知识库问答 >
问题:

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

颜德馨
2023-03-14

有没有办法使用openssl对x509证书或任何文档进行数字签名?

共有3个答案

袁英豪
2023-03-14

在openssl中对文档进行数字签名是可行的

对于这一个第一个,你的证书应该是可信的,它看起来像这样

-----BEGIN TRUSTED CERTIFICATE-----
MIIDbjCCAlYCCQCOyunl25ProDANBgkqhkiG9w0BAQUFADB5MQswCQYDVQQGEwJJ
...
-----END TRUSTED CERTIFICATE-----

然后使用以下命令

smime -sign -signer certificate.pem -inkey private.key -in test.txt \
    -out test1.txt -from ashish -to singhal
濮丁雷
2023-03-14

是的,OpenSSL的dgst和rsautl组件可以用于计算给定RSA密钥对的签名。

openssl dgst -sha256 data.txt > hash
openssl rsautl -sign -inkey privatekey.pem -keyform PEM -in hash >signature
openssl rsautl -verify -inkey publickey.pem -pubin -keyform PEM -in signature

更新:从下面捕捉雷托的评论,因为这是一个重要的细微差别。假设您要费劲验证,您想知道签名是在其所附的明文上生成的:

这对某些人来说可能听起来很明显,但是:请注意,rsautl验证只是解密文件签名。此调用的输出保证由私钥的所有者生成,但除此之外,不会检查任何其他内容。因此,要真正验证data.txt的一致性,您必须重新生成摘要,然后将其与openssl rsautl-验证的输出进行比较。

openssl dgst -sha256 -verify publickey.pem -signature signature data.txt

对于此操作,openssl需要公钥、签名和消息

苏阳州
2023-03-14

要生成私钥

openssl genrsa -out privatekey.pem 2048

要签署

openssl dgst -sha256 -sign privatekey.pem -out data.txt.signature data.txt

生成公钥

dgst -verify 需要公钥

openssl rsa -in privatekey.pem -outform PEM -pubout -out publickey.pem

验证

openssl dgst -sha256 -verify publickey.pem -signature data.txt.signature data.txt
  • 如果成功:打印“已验证确定”,返回代码 0
  • 如果失败:打印“验证失败”,返回代码1
 类似资料:
  • 我在理解OpenSSL的签名和验证过程时遇到了一些困难。 我有一个小型证书层次结构:根证书=>子证书=>结束实体证书。我想拥有来自最终实体CA的代码签名证书,因此创建了一个密钥对并请求CSR: 非常感谢。

  • 您好,我可以使用iText 5对PDF文档进行数字签名。我需要再次签署PDF,而在验证PDF时,它表明初始签名无效。您可以在此处查看再次签名的文件。 请参见下面用于标记的代码, 请让我知道出了什么问题。

  • 问题内容: 如何使用iText签名pdf?我正在通过此LINK进行操作, 但不了解my_private_key.pfx。我真的需要数字签名证书吗?请澄清一下。提前致谢。 问题答案: 您在问题中提到的文档很好。您必须创建数字签名文件。 该链接具有使用PKCS文件和签署PDF文档的工具。它声称使用iText,因此您应该能够理解这些步骤。源代码在这里

  • Im使用OpenSSL的< code>dgst命令执行ECDSA签名,如下所示: 然而,我在这个SO答案中读到,它首先对data_file进行SHA256哈希处理,ASN.1在签名之前对哈希进行编码。 我想创建数据的SHA256哈希,并让ECDSA只对该哈希的原始字节进行签名。(由于这是ECDSA签名,我不能使用如上述SO答案中所述。) 如何使用OpenSSL实现这一点?

  • 我正在尝试用DSS签署PDF文档,我的问题是我无法在服务器a中计算文档的哈希值,然后在服务器B中签署它。 知道服务器A包含PDF文档,我们在服务器B中检索用于签名的证书 我的问题是如何在不需要证书的情况下计算服务器a中文档的哈希值。然后在服务器B上发送签名? 更新: ******散列的准备和计算******** ******散列签名******** ********PDF错误:*********

  • 问题内容: 我需要对.flv文件进行数字排序,并且能够使用以下命令执行此操作: 但是有很多文件(数百个),因此无法正确排序。 但是奇怪的是,如果我在不起作用的情况下破坏了该命令。 我可以只使用ls,但文件夹中还有其他文件类型。 到目前为止我尝试过的是: 问题答案: 我会尝试以下代码。适用于我的测试场景: 所述列表上的每个线FLV文件1中,需要在每行开始对第二个字符的第一(且仅一个)字(开始数)。按