Standardeinstellungen von ext/openssl geändert
Gepostet von usa am 27. Okt 2014
Wir haben die Standardeinstellungen von ext/openssl in Ruby 2.1.4, Ruby 2.0.0-p594 und Ruby 1.9.3-p550 geändert. Mit dieser Änderung sind unsichere SSL/TLS-Optionen standardmäßig deaktiviert. Durch diese Änderung besteht jedoch die Möglichkeit von Problemen bei der SSL-Verbindung.
Details
OpenSSL implementiert immer noch Protokolle und Verschlüsselungen, die heute aus historischen Gründen als unsicher gelten. Wie die POODLE-Schwachstelle (CVE-2014-3566) zeigt, wenn Sie OpenSSL weiterhin mit solchen unsicheren Funktionen verwenden, können Sie die Sicherheit der Netzwerkkommunikation möglicherweise nicht gewährleisten. Daher haben wir uns basierend auf der Diskussion in Bug #9424 entschieden, solche unsicheren SSL/TLS-Optionen standardmäßig zu deaktivieren. Wenn Sie diese Änderung rückgängig machen müssen (siehe unten), wenden Sie den umgekehrten Patch an, um sie aufzuheben.
Wenn Sie diese Änderung jedoch rückgängig machen, besteht das Risiko, dass Sie die Sicherheit der Netzwerkkommunikation nicht gewährleisten können. Sie sollten die Auswirkungen dieser Änderung verstehen, bevor Sie sie entfernen.
Bundled libraries of Ruby
Diese Änderung wirkt sich auf net/http, net/imap und net/pop aus. Da DRb und WEBrick die Einstellung separat empfangen, hat diese Änderung keine Auswirkungen auf sie.
Skripte, die ext/openssl direkt verwenden
Diese Änderung wird reflektiert, wenn ein OpenSSL::SSL::SSLContext -Objekt instanziiert und die Instanzmethode set_params aufgerufen wird.
Insbesondere Code wie
ctx = OpenSSL::SSL::SSLContext.new
ctx.set_params # if you want to change some options, such as cert store, verify mode and so on, you can pass such parameters within a hash
ssl = OpenSSL::SSL::SSLSocket.new(socket, ctx)Wenn ext/openssl auf der Client-Seite verwendet wird, gehen wir davon aus, dass diese Änderung wahrscheinlich keine Probleme verursachen wird. Wenn Sie ext/openssl jedoch auf der Server-Seite verwenden und diese Änderung übernehmen, können einige alte Clients (Internet Explorer 6 unter Windows XP, Browser in alten Mobiltelefonen usw.) möglicherweise keine Verbindung zum Server herstellen.
Es liegt in Ihrer Entscheidung, ob Sie diese Änderung aktivieren möchten oder nicht. Berücksichtigen Sie die Kompromisse.
Workaround
Wenn Sie Ruby nicht aktualisieren können, aber unsichere SSL/TLS-Optionen bewältigen müssen, wenden Sie den folgenden Monkey-Patch an
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
endBetroffene Versionen dieser Änderung
- Ruby 1.9.3 patchlevel 550 und höher
- Ruby 2.0.0 patchlevel 594 und höher
- Ruby 2.1.4 und höher
- Revision 48097 und höher des Trunks
Verlauf
- Ursprünglich veröffentlicht am 2014-10-27 12:00:00 (UTC)
Aktuelle Nachrichten
Ruby 4.0.0 veröffentlicht
Wir freuen uns, die Veröffentlichung von Ruby 4.0.0 bekannt zu geben. Ruby 4.0 führt „Ruby Box“ und „ZJIT“ ein und bringt viele Verbesserungen mit sich.
Veröffentlicht von naruse am 25. Dez 2025
Ein neuer Look für Rubys Dokumentation
Nach dem Redesign von ruby-lang.org gibt es weitere Neuigkeiten zur Feier des 30-jährigen Jubiläums von Ruby: docs.ruby-lang.org hat ein komplett neues Erscheinungsbild mit Aliki – dem neuen Standard-Theme von RDoc.
Veröffentlicht von Stan Lo am 23. Dez 2025
Neues Website-Erscheinungsbild
Wir freuen uns, ein umfassendes Redesign unserer Website bekannt zu geben. Das Design für dieses Update wurde von Taeko Akatsuka erstellt.
Veröffentlicht von Hiroshi SHIBATA am 22. Dez 2025
Ruby 4.0.0 preview3 veröffentlicht
Wir freuen uns, die Veröffentlichung von Ruby 4.0.0-preview3 bekannt zu geben. Ruby 4.0 führt Ruby::Box und „ZJIT“ ein und bringt viele Verbesserungen mit sich.
Veröffentlicht von naruse am 18. Dez 2025