2

だから、私は画像やもので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 を使用してファイルに署名していると思います

ルビー/レールで同じ結果を再現するにはどうすればよいですか?

OpenSSLのドキュメントを調べてみましたが、役に立つものは見つかりませんでした

編集

これが誰かを助けるなら、これはドキュメントが言うことです

私はビルドする必要があります:

A detached PKCS#7 signature of the manifest
4

1 に答える 1

3

方法を見つけました。

このような:

  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

私のコードを明確にするために、マニフェストparamは、このコードを使用して署名したいハッシュウィッチです。画像、文字列、ファイルなどの別のアイテムが必要な場合は、文字列として読み取る必要があります

于 2012-07-19T14:43:28.017 に答える