ruby-on-rails OpenSSL::HMAC错误:EVP_PKEY_新的MAC密钥:rails应用程序中的malloc失败

mxg2im7a  于 2022-11-19  发布在  Ruby
关注(0)|答案(1)|浏览(107)

我正在开发一个rails应用程序,遇到了一个奇怪的错误,我不知道如何修复它。我的一些测试在运行JWT.encode时失败,错误消息是:

/Users/chille/.rbenv/versions/3.1.1/lib/ruby/3.1.0/openssl/hmac.rb:36:in `initialize': EVP_PKEY_new_mac_key: malloc failure (OpenSSL::HMACError)

我重新安装了ruby 3.1.1,也重新安装了OpenSSL以使用opensssl@3版本,因为该版本与ruby 3兼容,但没有成功。
如果有人知道如何解决这个问题,我将不胜感激。

  • MAC OS Monterrey 12.6.1
  • Ruby 3.1.1
  • Rails 7
ep6jt1vc

ep6jt1vc1#

我认为这是OpenSSL 1.1和现在的OpenSSL 3(Ruby 3已经迁移到OpenSSL 3)之间的兼容性问题。https://github.com/jwt/ruby-jwt/issues/495
据推测,JWT的v2.5.0版本增加了对OpenSSL〉= 3.0的支持,如果JWT * 正确支持OpenSSL 3.0,则全新安装(或升级,如果您没有使用该版本)应该 * 解决这个问题。

  • 编辑-
    更新:实际上看起来他们承认这是https://github.com/jwt/ruby-jwt/issues/526中的一个bug,而且它已经在Ruby的OpenSSL和JWT中修复了,但只是在大约2周前,所以到目前为止还没有新的版本。
    --在我们等待修复的时候...... --
    同时,如果您不直接需要OpenSSL 3,可以使用OpenSSL 1.1重新构建ruby
    假设您已经通过homebrew安装了openssl@1.1,并且正在使用asdf来管理Ruby版本(尽管此env选项适用于任何使用ruby-build的版本):
RUBY_CONFIGURE_OPTS="--with-openssl-dir=$(brew --prefix openssl@1.1)" asdf install ruby 3.1.1

相关问题