2

我收到一封带有我正在尝试验证的签名的电子邮件。

我正在使用 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 树(恕我直言)。

作为旁注:电子邮件在 MS Outlook 2010 中显示为成功验证。

任何想法签名可能有什么问题或我在这里遇到的openssl的哪些特点?除了 openssl 之外的任何其他工具来检查签名(以排除 openssl 问题)?

4

1 回答 1

1

好的,在 openssl邮件列表的帮助下:

asn.1 结构的错误。签名格式不正确。这不会导致 asn1parse 出现问题,但是当 OpenSSL 尝试验证它时会出现问题。
它没有正确的 DigestInfo 结构,只有原始 SHA1 哈希,这违反了 PKCS#1 规范中提到的 RSA 方案。

Outlook(和其他客户端)似乎可以容忍原始格式,而 openssl(以及 Thunderbird 和其他客户端)则不能。

于 2012-08-31T11:38:34.940 回答