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

How to verify a file and a p7s detached signature with openssl?

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

的默认消息

这是我的命令:

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

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

--编辑...

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

终于对p7s文件有了一点了解。这对于保护 e-mail 消息很常见,但是,我可以使用包含 PKCS#7 分离签名和证书的 p7s 文件来确保文件的准确性。

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

首先,初始配置:

  1. 创建私钥和证书
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365

二、创建p7s文件

  1. 运行 下面的命令使用私钥、证书对 pdf 文件进行签名,并生成一个 p7s 文件,其中包含文件的签名哈希和证书
openssl smime -sign -in test.pdf -inkey key.pem -outform DER -binary -signer cert.pem -out test.pdf.p7s

最后,验证 p7s 文件

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