【问题标题】:JRuby error loading private key with jruby-openssl in bouncycastleJRuby 在 bouncycastle 中使用 jruby-openssl 加载私钥时出错
【发布时间】:2017-05-18 21:26:33
【问题描述】:

我正在尝试使用 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))

我在 Google 上搜索了很多以找到解决此错误的方法,或者一般来说如何使用 JRuby 签署电子邮件,但我找不到任何有用的东西。

提前感谢您的帮助。

【问题讨论】:

    标签: jruby smime jruby-openssl


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-16
      • 1970-01-01
      • 2018-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-11
      • 1970-01-01
      相关资源
      最近更新 更多