如何创建独立的CMS签名?

染色质

我一直在尝试使用OpenSSL创建分离的PKCS#7 / CMS签名。我有一个很大的zip文件,我想为其创建数字签名,但是我不想将内容嵌入到签名中。OpenSSL是否可行,还是只能验证分离的签名而不创建它们?

dave_thompson_085

是的,您可以,而且它甚至是命令行实用程序的默认设置-您必须指定-nodetach“嵌入”数据。但是违反直觉的不是默认的PKCS#7 / CMS格式(S / MIME是),因此必须指定-outform假设您具有多种受支持的PEM格式之一的私钥,pkey.pem并且在PEM中也具有相应的证书cert.pem,并且中的数据data并且您想要“原始”(二进制)CMS在signature

openssl cms -sign -signer cert.pem -inkey pkey.pem -binary -in data -outform der -out signature

如果cert和key在同一个PEM文件中(有时是OpenSSL稍微扩展的PEM格式的一项便捷功能),则将该文件指定为to-signer和omit -inkey如果密钥和证书采用任何非PEM格式(包括PKCS#12),请先将其转换为PEM。

对于PEM格式的输出更改为-outform pem在支持重定向的OS / shell(我认为现在几乎是VMS)上,分别省略-in-out使用stdin或stdout,这可以包括从其他进程到其他进程的管道。(当然,签名数据必须由接收者/验证者一点一点地复制,这很重要,而且如果不在文件中,通常会更加困难。)

默认情况下,OpenSSL使用signedAttributes又名两级又名间接形式的签名。仅对数据签名(散列)add -noattr有关更多选项,请参见手册页:省略签名者证书或包括验证者的其他(链式)证书,更改指示的内容类型以及签名哈希和算法选项。

如果您想使用(C)API编写自己的程序,请从CMS_sign开始你也应该能够在本地看到任何Unix系统这些(以及相关的)手册页安装OpenSSL的,通常只是man cmsman CMS_sign等虽然有些安装可能需要调整您的MANPATH和/或指定如1ssl和3ssl特殊路段。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章