如何在 Ruby 中设置 SSLContext 选项

发布于 2024-09-25 23:41:41 字数 426 浏览 2 评论 0原文

我需要在 Ruby 1.8+ 中创建一个 SSLSocket 来与加密服务通信。我想在 SSLContext 对象上设置 SSL 选项(它最终会调用底层 OpenSSL 库中的 SSL_CTX_set_options)。我没有看到任何明显的方法可以做到这一点。

这是使用 OpenSSL::SSL::SSLContext 接口。

作为参考,这类似于调用 set_options()

I need to create an SSLSocket in Ruby 1.8+ to talk to an encrypted service. I want to set SSL options on the SSLContext object (it eventually calls SSL_CTX_set_options in the underlying OpenSSL library). I am not seeing any obvious way to do this.

This is using the OpenSSL::SSL::SSLContext interface.

As a point of reference, this is analogous to calling the set_options() in Python's pyOpenSSL library.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

层林尽染 2024-10-02 23:41:41

例子:

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

Example:

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
厌倦 2024-10-02 23:41:41

如果您需要在请求之前设置 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

If you need to set OpenSSL::SSL::SSLContext options before request you can do it in this way:


    # 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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文