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

时间:2019-05-07 00:22:17

标签: 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文件。我想知道如何验证这一点。

1 个答案:

答案 0 :(得分:0)

最后,我了解到有关p7s文件的一些内容。这对于保护电子邮件非常普遍,但是,我可以使用p7s文件,该文件包含带有证书的PKCS#7分离签名,以确保文件的准确性。

因此,我将我的解释分开了,以部分地易于解释我在这里所做的事情。请纠正我的错误之处!

首先是初始配置:

  1. 创建私钥和证书
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365
  1. 添加到受信任的证书中,以使openssl允许您的证书有效
sudo cp cert.pem /usr/local/share/ca-certificates/
sudo update-ca-certificates

第二,创建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

PS .:要删除此证书,只需运行以下命令。这将删除并更新证书

sudo rm -f /usr/local/share/ca-certificates/cert.pem
sudo update-ca-certificates --fresh