2

如何在使用受信任身份的同时在命令行上签署文件?

对于电子邮件,您会获得由 CA 签名的 x509 证书——您可以使用它来签署文件吗?

还是 CA 需要签署您的公钥,而您会使用相应的私钥对文件进行签名?

现在我刚刚找到了一种使用私钥签署文件的方法,但没有找到让 CA 签署公钥的方法,也没有找到使用证书签署文件的方法。

4

3 回答 3

2

你永远不想用公钥签名,因为那个签名是没有意义的。很多人都有公钥。只有一个人(签名者)应该拥有私钥。如果您确实使用公钥签名,那么拥有该公钥的任何其他人也可以创建一个同样有效的签名。没有办法确定谁实际签署了它,这违背了签名的目的。此外,由于没有人拥有私钥,因此无法验证使用公钥签名的签名。

您始终使用私钥签名并使用公钥进行验证。

您的签名可以附有 X509 证书。如果证书是由受信任的实体签署的,那么拥有该证书并信任它的人也可以信任由与证书中的公钥对应的私钥生成的签名。

您在问题中提供的链接包含用于验证签名的 openssl 命令。除了验证签名的openssl dgstopenssl rsautl方法之外,您还可以使用openssl pkeyutl

openssl pkeyutl -verify -in data -sigfile signature.bin -pubin -inkey pubkey.pem
于 2013-08-21T21:35:55.523 回答
1

公钥(包含在证书中)用于验证目的。公钥的私钥用于对数据进行签名。

您的公钥由 CA 签名。您可以使用该公钥的相应私钥来签署文件。验证者将使用公钥来验证文件的签名。

证书是由 CA 签署的公钥。如果 CA 受信任,则证书将受信任。

由于您使用证书对文件进行签名,因此还必须在证书中提及其用途。因此,请确保 CA 允许通过在证书的目的字段中指定此文件来签署文件。

于 2013-08-21T16:44:56.267 回答
1

实际上 x509 证书签名的公钥!

收件人需要使用证书来验证您的身份,并使用公钥来验证签名。

他们需要做的是从证书中提取公钥以用于验证:

openssl x509 -in me.crt -pubkey -noout > me.pub
于 2013-08-24T17:12:09.067 回答