Ответ 1
Да, мы добавили поддержку TLS 1.1 и 1.2 недавно. Это проще, чем установка ssl_version
на SSLContext
:
ctx = OpenSSL::SSL::SSLContext.new
ctx.ssl_version = :TLSv1_2
Вы можете продолжать использовать более общий :SSLv23
для максимальной совместимости. Это приведет к тому, что для соединения будет использоваться самый новый протокол, поддерживаемый одноранговым узлом. Если ваш партнер понимает TLS 1.2, он будет использоваться. Но в отличие от вышеприведенной выборки, если партнер не говорит 1.2, то реализация будет постепенно возвращаться к лучшей/новейшей версии, которую понимает эксперт, - хотя в приведенном выше примере соединение будет отклонено партнером, если оно не признал 1.2.
Для получения дополнительной информации также рассмотрите собственные документы OpenSSL по этому вопросу, вы можете передать то, что сказано о TLSv1_method, в TLSv1_1_method и TLSv1_2_method (представлен в Ruby как :TLSv1
, :TLSv1_1
и :TLSv1_2
соответственно).
Если ваш базовый OpenSSL поддерживает TLS 1.2 ( >= 1.0.1), вам хорошо идти. Однако для этого в настоящее время требуется сборка Ruby с багажника. Но если мы пока не получим отрицательной обратной связи, вполне возможно, что он будет передан в следующий выпуск 1.9.3.