openssl smime in ruby​​ / rails

所以,我有这个应用程序,创建一个带有图像和东西的zip文件

我想用smime签名。

如果我使用终端命令:

 openssl smime -binary -sign -passin "pass:MYPASS" -signer ./MyCertificate.pem -inkey ./MyKey.pem -in ./manifest.in -out ./signature.out -outform DER 

格式化:

 openssl smime -binary -sign -passin "pass:MYPASS" \ -signer ./MyCertificate.pem -inkey ./MyKey.pem \ -in ./manifest.in -out ./signature.out -outform DER 

manifest.in是包含要签名的文本的文件, signature.out是输出文件。

我不太了解签名,但我相信这段代码是使用PKCS7签署我的文件

如何用ruby / rails重新创建相同的结果?

我试图查看OpenSSL的文档,但我找不到任何有用的东西

编辑

如果这有助于某人,这就是文档所说的内容

我需要建立一个:

 A detached PKCS#7 signature of the manifest 

找到了办法。

像这样:

  require 'secure_digest' def sign_manifest(manifest = {}) manifest_str = manifest.to_json key4_pem = File.read Rails.root.join("lib", "keys", "key.pem") pass_phrase = "supera" key = OpenSSL::PKey::RSA.new key4_pem, pass_phrase cert = OpenSSL::X509::Certificate.new File.read Rails.root.join("lib", "keys", "certificate.pem") sign = OpenSSL::PKCS7.sign(cert, key, manifest_str, nil, OpenSSL::PKCS7::BINARY | OpenSSL::PKCS7::NOATTR | OpenSSL::PKCS7::DETACHED).to_der sign end 

为了澄清我的代码,manifest param是我想用这段代码签名的哈希女巫。 如果我想要另一个项目,如图像,字符串或文件,我只需要将其作为字符串读取