Как настроить параметры 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