【问题标题】:pkcs7-signature messagepkcs7-签名消息
【发布时间】:2011-08-04 12:56:33
【问题描述】:
在创建 as/mime 消息时,您在第二部分(第一部分是实际消息)应该提供您签署消息的证书和签名结果,即摘要,如何你应该连接它们吗?
我不使用任何像充气城堡或类似的库。我正在手动构建消息。你只是应该将它们一个接一个地连接起来,还是在它们之间用一条新线连接起来,或者它是如何完成的?我确实尝试看看它在 BC 是如何完成的,并且在没有任何明确答案的情况下进行了一些谷歌搜索。
【问题讨论】:
标签:
certificate
signature
smime
【解决方案1】:
S/MIME 格式基于 CMS 规范(加密消息语法),该规范将数据结构标准化以承载加密、经过身份验证或签名的数据。 S/MIME(和 CMS)对这些数据结构使用 ASN.1 表示法。
在 S/MIME 签名邮件中,邮件数字签名和签名证书都封装在电子邮件 MIME 多部分的第二部分中。可以手动构建消息多部分,但 S/MIME 签名是二进制格式,需要计算专用库。
一些技术细节:
- S/MIME ASN.1 模块的最新版本在RFC 5911 中描述
- 消息签名为
ContentInfo,包含SignedData 结构
-
SignedData 包含一个SignerInfo(大多数时候只有一个,因为电子邮件是由单个发件人签名的)。 SignerInfo 包含消息数字签名、签名算法和签名者证书唯一标识符(例如证书颁发者和序列号)
- 可以在
SignedData 中添加证书(这是可选的,因为证书是公共对象,可以从存储库下载它们,或者收件人可能已经将签名证书链存储在她的邮件应用程序中)