我收到了一封带有签名的电子邮件,我正在尝试核实。
我正在使用openssl openssl smime -inform SMIME -CAfile all.pem -verify -in signed.eml检查,它给出了错误:
4144:error:0D07209B:asn1 encoding routines:ASN1_get_object:too long:asn1_lib.c:142:
4144:error:0D068066:asn1 encoding routines:ASN1_CHECK_TLEN:bad object header:tasn_dec.c:1302:
4144:error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error:tasn_dec.c:379:Type=X509_SIG
4144:error:21071069:PKCS7 routines:PKCS7_signatureVerify:signature failure:pk7_doit.c:978:
4144:error:21075069:PKCS7 routines:PKCS7_verify:signature failure:pk7_smime.c:312:在谷歌搜索了一段时间后,这第一个似乎是asn.1结构的错误。但是运行openssl asn1parse -i -in sig.txt (sig.txt只是来自之前signed.eml的签名)没有错误,并且很好地显示了ASN.1树(IMHO)。
作为附注:该电子邮件在MS Outlook2010中显示为已成功验证。
你知道签名可能有什么问题吗?或者我在这里遇到了openssl的哪些违规行为?除了openssl之外,还有没有其他工具来检查签名(以排除openssl问题)?
发布于 2012-08-31 19:38:35
好的,在openssl mailing list的帮助下
这是asn.1结构的错误。签名格式不正确。这不会对asn1parse造成问题,但当OpenSSL尝试验证它时就会有问题。
它没有合适的DigestInfo结构,只有原始的SHA1散列,这违反了PKCS#1规范中提到的DigestInfo方案。
Outlook (和其他客户端)似乎可以容忍原始表单,而openssl (和Thunderbird和其他客户端)则不能。
https://stackoverflow.com/questions/12134271
复制相似问题