Змінено налаштування за замовчуванням ext/openssl
Опублікував usa 27-10-2014
Переклав: Andrii Furmanets
Ми змінили налаштування за замовчуванням ext/openssl в Ruby 2.1.4, Ruby 2.0.0-p594 та Ruby 1.9.3-p550. З цією зміною, небезпечні опції SSL/TLS тепер вимкнено за замовчуванням. Однак, через цю зміну, є можливість деяких проблем у з’єднанні SSL.
Деталі
OpenSSL все ще реалізує протоколи та шифри, які вважаються небезпечними сьогодні через історичні обставини. Як вразливість POODLE (CVE-2014-3566), якщо ви продовжуєте використовувати OpenSSL з такими небезпечними функціями, ви можете не змогти зберегти безпеку мережевого зв’язку. Тому, на основі обговорення в Помилка #9424, ми вирішили вимкнути такі небезпечні опції SSL/TLS за замовчуванням. Якщо вам потрібно скасувати цю зміну (показано нижче), застосуйте зворотний патч, щоб скасувати її.
Однак, якщо ви скасуєте цю зміну, є ризик, що ви не зможете гарантувати безпеку мережевого зв’язку. Ви повинні зрозуміти наслідки цієї зміни перед її видаленням.
Включені бібліотеки Ruby
Ця зміна відображається в net/http, net/imap та net/pop. Оскільки DRb та WEBrick отримують налаштування окремо, ця зміна не впливає на них.
Скрипти, які використовують ext/openssl безпосередньо
Ця зміна відображається, коли об’єкт OpenSSL::SSL::SSLContext створюється та викликається метод екземпляра set_params.
Зокрема, код, такий як:
ctx = OpenSSL::SSL::SSLContext.new
ctx.set_params # якщо ви хочете змінити деякі опції, такі як сховище сертифікатів, режим перевірки тощо, ви можете передати такі параметри в хеші
ssl = OpenSSL::SSL::SSLSocket.new(socket, ctx)При використанні ext/openssl як клієнтської сторони, ми припускаємо, що може не бути проблеми з цією зміною. Однак, якщо ви використовуєте ext/openssl як серверну сторону та відображаєте цю зміну, деякі старі клієнти (Internet Explorer 6 на Windows XP, браузери в старих мобільних телефонах, тощо) можуть не змогти підключитися до сервера.
Ваше рішення, чи вмикати цю зміну чи ні, розгляньте компроміси.
Обхідний шлях
Якщо ви не можете оновити Ruby, але вам потрібно впоратися з небезпечними опціями SSL/TLS, застосуйте наступний monkey-patch:
module OpenSSL
module SSL
class SSLContext
remove_const(:DEFAULT_PARAMS)
DEFAULT_PARAMS = {
:ssl_version => "SSLv23",
:verify_mode => OpenSSL::SSL::VERIFY_PEER,
:ciphers => %w{
ECDHE-ECDSA-AES128-GCM-SHA256
ECDHE-RSA-AES128-GCM-SHA256
ECDHE-ECDSA-AES256-GCM-SHA384
ECDHE-RSA-AES256-GCM-SHA384
DHE-RSA-AES128-GCM-SHA256
DHE-DSS-AES128-GCM-SHA256
DHE-RSA-AES256-GCM-SHA384
DHE-DSS-AES256-GCM-SHA384
ECDHE-ECDSA-AES128-SHA256
ECDHE-RSA-AES128-SHA256
ECDHE-ECDSA-AES128-SHA
ECDHE-RSA-AES128-SHA
ECDHE-ECDSA-AES256-SHA384
ECDHE-RSA-AES256-SHA384
ECDHE-ECDSA-AES256-SHA
ECDHE-RSA-AES256-SHA
DHE-RSA-AES128-SHA256
DHE-RSA-AES256-SHA256
DHE-RSA-AES128-SHA
DHE-RSA-AES256-SHA
DHE-DSS-AES128-SHA256
DHE-DSS-AES256-SHA256
DHE-DSS-AES128-SHA
DHE-DSS-AES256-SHA
AES128-GCM-SHA256
AES256-GCM-SHA384
AES128-SHA256
AES256-SHA256
AES128-SHA
AES256-SHA
ECDHE-ECDSA-RC4-SHA
ECDHE-RSA-RC4-SHA
RC4-SHA
}.join(":"),
:options => -> {
opts = OpenSSL::SSL::OP_ALL
opts &= ~OpenSSL::SSL::OP_DONT_INSERT_EMPTY_FRAGMENTS if defined?(OpenSSL::SSL::OP_DONT_INSERT_EMPTY_FRAGMENTS)
opts |= OpenSSL::SSL::OP_NO_COMPRESSION if defined?(OpenSSL::SSL::OP_NO_COMPRESSION)
opts |= OpenSSL::SSL::OP_NO_SSLv2 if defined?(OpenSSL::SSL::OP_NO_SSLv2)
opts |= OpenSSL::SSL::OP_NO_SSLv3 if defined?(OpenSSL::SSL::OP_NO_SSLv3)
opts
}.call
}
end
end
endЗачеплені версії цієї зміни
- Ruby 1.9.3 рівень патчу 550 та пізніші
- Ruby 2.0.0 рівень патчу 594 та пізніші
- Ruby 2.1.4 та пізніші
- ревізія 48097 та пізніші trunk
Історія
- Спочатку опубліковано 2014-10-27 12:00:00 (UTC)
Останні новини
Вийшов Ruby 3.2.10
Вийшов Ruby 3.2.10.
Опублікував hsbt 14-01-2026
Вийшов Ruby 4.0.1
Вийшов Ruby 4.0.1.
Опублікував k0kubun 13-01-2026
Вийшов Ruby 4.0.0
Ми раді повідомити про випуск Ruby 4.0.0. Ruby 4.0 представляє “Ruby Box” та “ZJIT”, а також додає багато покращень.
Опублікував naruse 25-12-2025
Новий вигляд документації Ruby
Слідом за ре-дизайном ruby-lang.org, ми маємо більше новин, щоб відсвяткувати 30-річчя Ruby: docs.ruby-lang.org має повністю новий вигляд завдяки Aliki — новій темі за замовчуванням для...
Опублікував Stan Lo 23-12-2025