Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cryptography 使用openssl对文件进行数字签名_Cryptography_Openssl_Rsa - Fatal编程技术网

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

Cryptography 使用openssl对文件进行数字签名,cryptography,openssl,rsa,Cryptography,Openssl,Rsa,是否有一种方法可以使用openssl对x509证书或任何文档进行数字签名?是的,openssl的和组件可以用于计算给定RSA密钥对的签名 签字: 仅验证签名: 更新:从下面捕获Reto的评论,因为这是一个重要的细微差别。假设您要费劲验证,您想知道签名是在其所附的明文上生成的: 对于某些人来说,这可能听起来很明显,但是:请注意,rsautl verify只是解密文件签名。此调用的输出保证由私钥的所有者生成,但除此之外,没有检查任何其他内容。因此,要真正验证data.txt的一致性,您必须重新生成摘

是否有一种方法可以使用openssl对x509证书或任何文档进行数字签名?

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

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


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

验证私钥的所有者是否为
data.txt
提供担保:
对于此操作,openssl需要公钥、签名和消息。

签名/验证单个消息的替代方法,灵感来自

签名

openssl dgst -sha256 -sign snakeoil.key -out some-file.sha256 some-file 
验证

# dgst -verify requires the public key
openssl x509 -in snakeoil.crt -pubkey -noout > snakeoil.pub

openssl dgst -sha256  -verify  snakeoil.pub -signature some-file.sha256 some-file

# in case of success: prints "Verified OK"
# in case of failure: prints "Verification Failure", return code 1

# or compact (requires a modern shell)
openssl dgst -sha256  \
    -verify  <(openssl x509 -in snakeoil.crt -pubkey -noout) \
    -signature some-file.sha256 some-file
#dgst-验证需要公钥
opensslx509-in snakeoil.crt-pubkey-noout>snakeoil.pub
openssl dgst-sha256-验证snakeoil.pub-签名some-file.sha256 some文件
#如果成功:打印“已验证正常”
#如果失败:打印“验证失败”,返回代码1
#或紧凑型(需要现代外壳)
openssl dgst-sha256\

-验证在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

这将在文件“hash”中留下一个十六进制/ascii格式的散列,如果您希望对二进制版本的散列进行签名,则需要在openssl dgst命令行上使用“-binary”。我的
openssl
版本也需要
-pubin
才能进行验证。这对某些人来说可能听起来很明显,但是:请注意,
rseault verify
只需解密文件
签名
。此调用的输出保证由私钥的所有者生成,但除此之外,没有检查任何其他内容。因此,要真正验证
data.txt
的一致性,您必须重新生成摘要,然后将其与
openssl rsautl-verify
的输出进行比较。不幸的是,堆栈溢出的伪影使得这种情况不太可能发生。因为这个答案是被接受的,所以它将继续比你的答案更明显。我至少投了你的票。嗨,我只是用同样的方法测试。我使用“openssl rsautl-verify-inkey publickey.pem-pubin-keyform pem-in签名”来获取散列值,它与我的散列文件相同。但我使用“openssl dgst-sha256-verify publickey.pem-signature signature data.txt”,它显示验证失败。为什么会发生这种情况?这很有帮助-我有crt文件,但不知道如何在没有.pub文件的情况下进行验证。现在我知道了;-)为了澄清,
some file.sha256
实际上是签名(例如signature.txt),而
some file
实际上是要签名的消息(例如message.txt)。因此,在这两种操作中,
某个文件
都是一个输入文件。在
-sign
操作中,
signature.txt
是一个输出文件,在
-verify
操作中,
signature.txt
是一个输入文件。我会编辑它,但如果你愿意,我会让你这么做。@reto是
某个文件。sha256
是二进制文件吗?这正常吗?因为这样做之后,我得到了一个文件的内容,看起来像这样
@ugڻ��^{�{�9吨�*�xAO“kd{�����D������͊��(����K�,A'c;�&�G��[b]��E�一:��hh0���^���:�Y@��E�$��A.������-�?�'�
执行给定命令后:
openssl dgst-sha256-sign snakeoil.key-out some-file.sha256 some-file
@Roel这是正常和预期的。
# dgst -verify requires the public key
openssl x509 -in snakeoil.crt -pubkey -noout > snakeoil.pub

openssl dgst -sha256  -verify  snakeoil.pub -signature some-file.sha256 some-file

# in case of success: prints "Verified OK"
# in case of failure: prints "Verification Failure", return code 1

# or compact (requires a modern shell)
openssl dgst -sha256  \
    -verify  <(openssl x509 -in snakeoil.crt -pubkey -noout) \
    -signature some-file.sha256 some-file
-----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