遵循引人入胜的错误,this post on ruby-lang.org描述了如何检查漏洞和升级.
它包括这个建议:
要验证您链接到Ruby的OpenSSL库的哪个版本,请使用以下命令:
ruby -v -ropenssl -rfiddle -e 'puts Fiddle::Function.new(Fiddle.dlopen(nil)["SSLeay_version"],[Fiddle::TYPE_INT],Fiddle::TYPE_VOIDP).call(0)'
要验证当前使用Ruby安装的OpenSSL的版本,请使用以下命令:
ruby -ropenssl -e 'puts OpenSSL::OPENSSL_VERSION'
这两个检查有什么区别,如果从任一命令返回错误的版本,建议使用什么操作?
解决方法
在问了一些问题
elsewhere之后,我目前的理解是这样的:
> OpenSSL从未与Ruby一起编译; Ruby在编译时简单地被告知在哪里寻找OpenSSL.> ruby -r rbconfig -e’将RbConfig :: CONFIG [“configure_args”]’应该告诉你Ruby将寻找各种可执行文件,包括OpenSSL>所有重要的是,OpenSSL在该位置的副本是最新的; cd在那里使用./openssl版本来找出来.> ruby -v -ropenssl -rfiddle -e’将Fiddle :: Function.new(Fiddle.dlopen(nil)[“SSLeay_version”],[Fiddle :: TYPE_INT],Fiddle :: TYPE_VOIDP).call(0)’应该给出与运行openssl版本直接相同的答案,因为它实际上要求Ruby使用的OpenSSL的副本来报告其版本号> OpenSSL :: OPENSSL_VERSION可能已过期;它报告编译时发现的版本.