1

アプリケーションから送信された電子メールに s/mime 証明書を使用して署名しようとしています。このアプリケーションは、JRuby 1.7.26 と jruby-openssl gem の最新バージョンを使用します。(バージョン 0.9.19)。次のように秘密鍵を読み込もうとすると:

key_file = File.read(Rails.root.join('config', 'domain.key'))
private_key = OpenSSL::PKey::RSA.new(key_file)

次のエラーが表示されます。

Java::JavaLang::NoSuchMethodError: org.bouncycastle.util.encoders.Base64.encode([BII)[B
from org.jruby.ext.openssl.x509store.PEMInputOutput.writeEncoded(PEMInputOutput.java:1496)
...

それが機能する場合、次のように電子メールに署名したいと思います。

data = "Test"
OpenSSL::PKCS7.write_smime(OpenSSL::PKCS7.sign(certificate, private_key, data, [], OpenSSL::PKCS7::DETACHED))

このエラーの解決策や、一般的にJRubyでメールに署名する方法を見つけるためにグーグルで検索しましたが、役立つものは何も見つかりませんでした.

よろしくお願いします。

4

1 に答える 1

0

クラスパスの混乱を意味する可能性があります->別の場所からロードされたBC .jar。

JRuby-OpenSSL のパックされた BC (0.9.19 では 1.55) には必要なBase64メソッドがあります。そうしないと、そもそも Ruby 拡張ビットのコンパイルに失敗します。

于 2017-01-23T14:50:56.613 に答える