当前位置: 首页 > 知识库问答 >
问题:

Openssl命令行无法验证先前创建的分离smime签名

鲜于勇
2023-03-14

我正在OSX 10.6上使用openssl 1.0.1b的命令行界面。

首先,我创建一个DSA密钥。

openssl dsaparam -noout -out privatekey.pem -genkey 1024

接下来,我使用该密钥创建一个自签名证书。

openssl req -new -outform PEM -out certificate.pem -key privatekey.pem -keyform PEM -sha1 -x509 -days 1000

接下来,我使用该证书和密钥创建文件的分离smime签名。

openssl smime -sign -in file.zip -out file.zip.signature -outform DER -inkey privatekey.pem -signer certificate.pem

最后,我立即尝试验证相同的文件/签名*

openssl smime -verify -in file.zip.signature -inform DER -content file.zip -noverify certificate.pem > /dev/null

但不知怎的,我失败了。

PKCS7 routines:PKCS7_signatureVerify:digest failure:pk7_doit.c:1097:
PKCS7 routines:PKCS7_verify:signature failure:pk7_smime.c:410

没有任何东西在改变文件,手动md5哈希在前后匹配,但不知何故签名摘要失败了。有人知道我做错了什么吗?

谢谢。

`*注意,-noverify用于告诉openssl不要在证书自签名时警告我

共有1个答案

郎仰岳
2023-03-14

我已经解决了这个问题。

因为我没有使用-binary标志,所以openssl正在将输入文件中的\n转换为\r\n

 类似资料:
  • 我尝试制作一个Perl-Script来验证SMIME消息"手动"。我真的试了很多,但没有用。 大多数情况下,验证会放置“签名长于密钥”或只是给出错误的返回。 如果我在控制台用OpenSSL做这件事,它就像一个魅力。 它生成并验证msg.txt 我把它改短了。 现在我尝试用非常简单的Perl来展示它。我简化了MIME处理,只使用msg.txt中的内联值。 我跳过了剩下的。它相当于msg.txt中的签

  • 我正在尝试验证使用BearSSL在嵌入式设备上使用OpenSSL创建的ECDSA签名。 首先,我使用OpenSSL创建了一个私钥并提取了公钥: 然后我提取了原始公钥: 我有一个,它只包含,并使用以下命令对此进行签名: 现在,它包含ASN1格式的签名,长度如预期的那样为72个字节: 现在到嵌入部分。我首先包括数据、签名和公钥: 此外,出于偏执,我比较了和我的字符串的md5和,然后再进行进一步的快速检

  • 我正在研究ECDSA-WITH-SHA256的静脉签名。我的代码库来自openssl v1。0.1h,可以使用openssl命令行运行。但我的代码在执行以下代码时返回错误: PKCS7_dataInit代码如下: PKCS7_bio_添加_摘要返回错误,因此验证失败。 我像下面的命令行工具一样构造完全相同的命令行参数:[openssl smime]-verify-inform DER-in sig

  • 我传入以下内容(摘要/哈希是SHA1): 到此功能: 但我无法在OpenSSL中验证签名(verify_success为0),即使完全相同的数据在C#中验证成功。 关于我为什么或做错了什么的任何想法? C#中的公钥是: 我假设4543533120000000是。NET特定的东西,所以我只是把04前置到它的其余部分。 这是用于验证签名的C#代码,它成功地做到了(dataBytes的SHA1在两个程序

  • 是否可以验证带有p7s分离签名的文件?我正试图使用Openssl实现这一点,但我得到了一条关于Openssl的默认消息和 这是我的命令: 是否可以使用openssl进行文件验证和p7s签名? --编辑。。。 只是想让你知道。我有一个p7s文件和一个pdf文件。我想知道如何验证这一点。

  • 我有一个使用C++中的openSSL生成的keypair,我正在使用它在一个严格使用RSACryptoServiceProvider(没有BouncyCastle等)的C#服务器上对验证消息进行签名。我使用PKCS#1 SHA256生成签名,然后以十六进制的形式与公钥一起传输签名。问题是无法在服务器上验证签名。我已经尝试删除了头,上面写着“----开始RSA公钥-----”等等。但是还没有结果。生