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 .jars 中的混乱。

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

于 2017-01-23T14:50:56.613 回答