如何在Ruby中设置SSLContext选项

brgchamk  于 2023-06-22  发布在  Ruby
关注(0)|答案(2)|浏览(105)

我需要在Ruby 1.8+中创建一个SSLSocket来与加密的服务通信。我想在SSLContext对象上设置SSL选项(它最终会调用底层OpenSSL库中的SSL_CTX_set_options)。我没有看到任何明显的方法来做到这一点。
这是使用OpenSSL::SSL::SSLContext接口。
作为参考,这类似于在Python的pyOpenSSL库中调用set_options()

inkz8wg9

inkz8wg91#

示例:

ctx = OpenSSL::SSL::SSLContext.new

ctx.set_params(:options => OpenSSL::SSL::OP_EPHEMERAL_RSA | OpenSSL::SSL::OP_NO_SSLv2)
# or
ctx.options = OpenSSL::SSL::OP_EPHEMERAL_RSA | OpenSSL::SSL::OP_NO_SSLv2
v7pvogib

v7pvogib2#

如果你需要在请求前设置OpenSSL::SSL::SSLContext选项,你可以这样做:

# Set options that you need
    OpenSSL::SSL::SSLContext::DEFAULT_PARAMS[:options] |= OpenSSL::SSL::OP_LEGACY_SERVER_CONNECT

    # Make a request
    uri = URI('https://example.com')
    res = Net::HTTP.post(uri, {}.to_json)

    # Unset options
    OpenSSL::SSL::SSLContext::DEFAULT_PARAMS[:options] &= ~OpenSSL::SSL::OP_LEGACY_SERVER_CONNECT

相关问题