如何使用openssl验证文件和p7s分离签名?

Cel*_*gra 4 openssl ssl-certificate pkcs#7

可以验证带有 p7s 分离签名的文件吗?我正在尝试使用 Openssl 来做到这一点,但是我收到了一条关于 openssl 的默认消息,并且unknown option -verify

这是我的命令:

openssl pkcs7 -inform DER -verify -noverify -in file.docx.p7s -out file.docx

这可以使用openssl进行文件验证和p7s签名吗?

- 编辑...

只是让你知道。我得到了一个带有 pdf 文件的 p7s 文件。我想知道如何验证。

Cel*_*gra 16

最后,我对 p7s 文件有了一点了解。这对于保护电子邮件消息很常见,但是,我可以使用 p7s 文件,其中包含带有证书的 PKCS#7 分离签名,以确保文件的真实性。

所以,我将我的解释分成几部分,以便于解释我在这里所做的事情。如有不对,请指正!

一、初始配置:

  1. 创建私钥和证书
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365
Run Code Online (Sandbox Code Playgroud)

二、创建p7s文件

  1. 运行以下命令以使用私钥、证书对 pdf 文件进行签名,并生成包含文件和证书的签名散列的 p7s 文件
openssl smime -sign -in test.pdf -inkey key.pem -outform DER -binary -signer cert.pem -out test.pdf.p7s
Run Code Online (Sandbox Code Playgroud)

最后,验证 p7s 文件

  1. 现在,我必须从 p7s 文件中提取 pkcs7 签名
openssl pkcs7 -inform der -in test.pdf.p7s -out test.pdf.pkcs7
Run Code Online (Sandbox Code Playgroud)
  1. 之后,我从 pkcs7 文件中提取了证书
openssl pkcs7 -print_certs -in test.pdf.pkcs7 -out test.pdf.pkcs7.cert
Run Code Online (Sandbox Code Playgroud)
  1. 然后,一起验证pkcs7、证书和文件。只是为了验证该文件是否属于该证书
openssl smime -verify -binary -inform PEM -in test.pdf.pkcs7 -content test.pdf -certfile test.pdf.pkcs7.cert -nointern -noverify > /dev/null
Run Code Online (Sandbox Code Playgroud)

  • 第一个命令将签名文件从 pem 转换为 der 编码。可以通过将第二个命令更改为“openssl pkcs7 -print_certs -inform der -in test.pdf.p7s -out test.pdf.pkcs7.cert”并将第三个命令更改为“openssl smime -verify -binary -inform der”来跳过它-in test.pdf.p7s -content test.pdf -certfile test.pdf.pkcs7.cert -nointern -noverify > /dev/null `。 (3认同)