如何在使用受信任的身份时在命令行上签名文件?
对于电子邮件,您可以获得由CA签名的x509证书 - 您是否可以使用相同的方式签署文件?
或者CA是否需要签署您的公钥,您是否使用相应的私钥对文件进行签名?
现在我刚刚找到了sign files with the private key的方法,但没有办法让CA签署公钥,也没办法使用证书签名文件。
答案 0 :(得分:2)
您不希望使用公钥进行签名,因为该签名无意义。很多人都有公钥。只有一个人(签名者)应该有私钥。如果您使用公钥进行签名,则拥有该公钥的任何其他人也可以创建同样有效的签名。没有办法确定谁签署了它,这违背了签名的目的。此外,没有办法验证使用公钥签名的签名,因为没有人会拥有私钥。
您始终使用私钥进行签名并使用公钥进行验证。
您的签名可附有X509证书。如果证书由可信实体签名,那么拥有此证书并信任该证书的人也可以信任由与证书中的公钥对应的私钥生成的签名。
您在问题中提供的链接包含用于验证签名的openssl命令。除了验证签名的openssl dgst
和openssl rsautl
方法之外,您还可以使用openssl pkeyutl。
openssl pkeyutl -verify -in data -sigfile signature.bin -pubin -inkey pubkey.pem
答案 1 :(得分:1)
公钥(包含在证书中)用于验证目的。公钥的私钥用于对数据进行签名。
您的公钥由CA签名。您可以使用该公钥的相应私钥来签署文件。 Verifier将使用公钥来验证文件的签名。
证书是由CA签署的公钥。如果CA受信任,则证书将被信任。
由于您使用证书对文件进行签名,因此还必须在证书中提及其用途。因此,请确保CA允许通过在证书的目的字段中指定此文件来签名文件。
答案 2 :(得分:0)
实际上x509证书 是已签名的公钥!
收件人需要使用证书来验证您的身份,并使用公钥来验证签名。
他们需要做的是从证书中提取公钥以用于验证:
openssl x509 -in me.crt -pubkey -noout > me.pub