JRuby在bouncycastle中使用jruby-openssl加载私钥时出错

时间:2017-01-04 14:33:33

标签: jruby smime jruby-openssl

我正在尝试使用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签署电子邮件,但我找不到任何有用的信息。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

可能意味着课程路径上的混乱 - > BC .jars从其他地方加载。

JRuby-OpenSSL的压缩BC(在0.9.19中为1.55)具有所需的Base64方法 - 否则将无法首先编译Ruby扩展位。