【问题标题】:How to get the ssl_version of a Ruby SSLContext object如何获取 Ruby SSLContext 对象的 ssl_version
【发布时间】:2017-05-25 23:35:51
【问题描述】:

我现在正在研究 OpenSSL 的 SSLContext,并创建了一个像这样的 Ruby OpenSSL 对象:

0> ssl_object = OpenSSL::SSL::SSLContext.new("TLSv1_2_client")
=> #<OpenSSL::SSL::SSLContext:0x7acec6db>

它创建了SSLContext 对象的一个​​实例。我可以使用以下方法更改此 SSLContext 对象:

ssl_object.ssl_version="SSLv2_3"

但是,我想了解/了解ssl_versionssl_object。我该怎么做?

当我这样做时:

0> ssl_object.ssl_version
=> undefined method `ssl_version' for #<OpenSSL::SSL::SSLContext:0x38106bc4>
Did you mean?  ssl_version=

根据documentation,只有setter,没有getter。

【问题讨论】:

    标签: ruby ssl openssl sslcontext


    【解决方案1】:

    看起来你可以创建一个假套接字:

    OpenSSL::SSL::SSLSocket.new(
      UNIXSocket.pair.first, 
      OpenSSL::SSL::SSLContext.new("SSLv3")
    ).ssl_version
    => "SSLv3"
    

    【讨论】:

    • 无论您设置什么,这似乎都会返回"SSLv23"
    • 你确定这不只是返回默认的 ssl_version 吗?
    • @theGreenCabbage 如果是这样,没有其他方法,因为 C 包装器没有定义 getter:github.com/ruby/openssl/blob/…
    • 是的,这就是我所看到的,也是我相信的。感谢您的尝试!
    • @theGreenCabbage 查看我的更新,看起来SSLSocket 定义了ssl_version getter。
    猜你喜欢
    • 2017-12-27
    • 1970-01-01
    • 1970-01-01
    • 2011-04-18
    • 2011-12-14
    • 2011-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多