Как настроить параметры SSLContext в Ruby

Мне нужно создать SSLSocket в Ruby 1.8+ поговорить с зашифрованным сервисом. Я хочу установить параметры SSL на SSLContext объект (это в конечном итоге вызывает SSL_CTX_set_options в базовой библиотеке OpenSSL). Я не вижу очевидного способа сделать это.

Это с помощью OpenSSL::SSL::SSLContext интерфейс.

Для справки, это аналогично set_options() в библиотеке PyOpenSSL Python.

2 ответа

Решение

Пример:

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

Если вам нужно установить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

Другие вопросы по тегам