2012-06-22 84 views
2

所以,我有這個應用程序,創建具有圖像和東西OpenSSL的SMIME軌

一個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 
+0

你有沒有看過https://github.com/medined/smime?如果你願意,你也可以剔除那個命令。 –

+0

我看到這個庫,但幫助提出了更多的問題比實際幫助... –

回答

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 

只是爲了澄清我的代碼,清單參數是一個哈希巫婆我想使用此代碼簽名。如果我想要另一個項目,如圖像,字符串或文件,我只需要讀取它作爲字符串

+0

你剛剛救了我這麼多時間,謝謝! – samvermette