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是我想用这段代码签名的哈希女巫。 如果我想要另一个项目,如图像,字符串或文件,我只需要将其作为字符串读取
- OpenSSL :: SSL :: SSLError:hostname与服务器证书不匹配
- 是否可以在Ruby中启用TLS v1.2? 如果是这样,怎么样?
- 使用rbenv和ruby-build构建ruby时会出现未定义的符号:SSLv2_method
- 如何使Ruby AES-256-CBC和PHP MCRYPT_RIJNDAEL_128一起发挥得很好
- Ruby没有找到新版本的OpenSSL
- 证书续订后,Ruby Net :: HTTP响应OpenSSL :: SSL :: SSLError“证书validation失败”
- 使用Ruby实现HTTPS证书/ pubkey固定
- 干净安装后持久的Ruby segfaulting
- Lion:RVM安装rubies的问题 – 与openssl相关的问题