Можно ли включить TLS v1.2 в Ruby? Если да, то как?

Можно ли использовать TLSv.1.2 или TLSv1.1 с Ruby?

Я составил версию Ruben от Frankenstein, используя OpenSSL 1.0.1c (последняя доступная), и единственная разница в том, что SSLv2 теперь является опцией в OpenSSL::SSL::SSLContext::METHODS

Можно ли добавить TLSv1.2 в этот список?

Ответ 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.