أخطاء SSL في البريد الإلكتروني بعد التحديث إلى 2.4.0.beta4

بما أن الترقية إلى الإصدار 2.4.0.beta4، لم تستطع أي من التثبيتات الخاصة بي التي تستخدم Rackspace لإرسال البريد الإلكتروني إرسال أي بريد خارجي. وبما أن خادم البريد الصادر هو، مرة أخرى، Rackspace، فسأفترض أن إعدادات SSL/TLS الخاصة بهم صحيحة (وعلى أي حال، يبدو أنها تعمل في جميع عملاء البريد الإلكتروني الرئيسيين). ربما يكون هذا الموضوع مرتبطًا بالموضوع.

على الرغم من ذلك، وبعد تطبيق التحديثات الأخيرة (أنا غير متأكد من التغيير الدقيق)، لم يعد الخطأ هو نفسه المذكور في الموضوع المذكور أعلاه، بل أصبح الآن كالتالي:

Jobs::HandledExceptionWrapper: Wrapped Net::ReadTimeout: Net::ReadTimeout with #<TCPSocket:(closed)>

وأفترض أن هذا خطأ برمجي.

تحرير: موضوع متصل آخر

@Gerhard

هل يمكنك محاولة الاتصال بخادم SMTP من داخل حاوية Docker؟

SMTP مع StartTLS (افتراضيًا، ما لم قمت بتغيير DISCOURSE_SMTP_ENABLE_START_TLS في app.yml):

openssl s_client -connect <hostname>:<port> -starttls smtp

SMTP

openssl s_client -connect <hostname>:<port>

مع استخدام العلم -starttls، يعيد الأمر ببساطة “CONNECTED”. بدون -starttls:

root@omnifora-com-app:/var/www/discourse# openssl s_client -connect secure.emailsrvr.com:465
CONNECTED(00000003)
depth=2 C = GB, ST = Greater Manchester, L = Salford, O = COMODO CA Limited, CN = COMODO RSA Certification Authority
verify return:1
depth=1 C = GB, ST = Greater Manchester, L = Salford, O = COMODO CA Limited, CN = COMODO RSA Domain Validation Secure Server CA
verify return:1
depth=0 OU = Domain Control Validated, OU = EssentialSSL, CN = secure.emailsrvr.com
verify return:1
139636332590208:error:141A318A:SSL routines:tls_process_ske_dhe:dh key too small:../ssl/statem/statem_clnt.c:2156:
---
سلسلة الشهادات
 0 s:OU = Domain Control Validated, OU = EssentialSSL, CN = secure.emailsrvr.com
   i:C = GB, ST = Greater Manchester, L = Salford, O = COMODO CA Limited, CN = COMODO RSA Domain Validation Secure Server CA
 1 s:C = GB, ST = Greater Manchester, L = Salford, O = COMODO CA Limited, CN = COMODO RSA Domain Validation Secure Server CA
   i:C = GB, ST = Greater Manchester, L = Salford, O = COMODO CA Limited, CN = COMODO RSA Certification Authority
 2 s:C = GB, ST = Greater Manchester, L = Salford, O = COMODO CA Limited, CN = COMODO RSA Certification Authority
   i:C = SE, O = AddTrust AB, OU = AddTrust External TTP Network, CN = AddTrust External CA Root
 3 s:C = SE, O = AddTrust AB, OU = AddTrust External TTP Network, CN = AddTrust External CA Root
   i:C = SE, O = AddTrust AB, OU = AddTrust External TTP Network, CN = AddTrust External CA Root
---
شهادة الخادم
-----BEGIN CERTIFICATE-----
MIIG5jCCBc6gAwIBAgIRAMWoQ0lmf1VC8Ch8zZZTHm0wDQYJKoZIhvcNAQELBQAw
gZAxCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAO
BgNVBAcTB1NhbGZvcmQxGjAYBgNVBAoTEUNPTU9ETyBDQSBMaW1pdGVkMTYwNAYD
VQQDEy1DT01PRE8gUlNBIERvbWFpbiBWYWxpZGF0aW9uIFNlY3VyZSBTZXJ2ZXIg
Q0EwHhcNMTkwMTEwMDAwMDAwWhcNMjAwMzEwMjM1OTU5WjBZMSEwHwYDVQQLExhE
b21haW4gQ29udHJvbCBWYWxpZGF0ZWQxFTATBgNVBAsTDEVzc2VudGlhbFNTTDEd
MBsGA1UEAxMUc2VjdXJlLmVtYWlsc3J2ci5jb20wggEiMA0GCSqGSIb3DQEBAQUA
A4IBDwAwggEKAoIBAQDZzFpkI/ujPCuNZpHLueu+/iqUsc5U7+yYa9d6xIbkh2BN
u+OpBNCTn4ACa0a3EaqRVyceUUh8TodUPtkZYLZO6iqwl2eOd8h3NXxtRlyaj0Hz
uSOlRbA5CiVZ4H1Ia8k/DVh+r1Rk6Da/f52wBJE8ICFgm7Uyrjtfcc90gBk+7i4I
y1aNwKW/nqmqQBEiTeyUF2kJiTovtorQo7zaedPefm2VUoKyxe/8jl7qA7F9+1p0
XvvWrc3/vqEEZR6tmcAF8tmp0MSkMnt3klwg/xopVn5nPq52t6fLRXA0aLFBUHzT
U82Iw1Weg+gUVi77ONDIabfYuCqqEgpnAyeUhh8hAgMBAAGjggNvMIIDazAfBgNV
HSMEGDAWgBSQr2o6lFoL2JDqElZz30O0Oija5zAdBgNVHQ4EFgQUFJzBKVTbToPC
UoxWxXfRAJGz+YswDgYDVR0PAQH/BAQDAgWgMAwGA1UdEwEB/wQCMAAwHQYDVR0l
BBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCME8GA1UdIARIMEYwOgYLKwYBBAGyMQEC
AgcwKzApBggrBgEFBQcCARYdaHR0cHM6Ly9zZWN1cmUuY29tb2RvLmNvbS9DUFMw
CAYGZ4EMAQIBMFQGA1UdHwRNMEswSaBHoEWGQ2h0dHA6Ly9jcmwuY29tb2RvY2Eu
Y29tL0NPTU9ET1JTQURvbWFpblZhbGlkYXRpb25TZWN1cmVTZXJ2ZXJDQS5jcmww
gYUGCCsGAQUFBwEBBHkwdzBPBggrBgEFBQcwAoZDaHR0cDovL2NydC5jb21vZG9j
YS5jb20vQ09NT0RPUlNBRG9tYWluVmFsaWRhdGlvblNlY3VyZVNlcnZlckNBLmNy
dDAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AuY29tb2RvY2EuY29tMDkGA1UdEQQy
MDCCFHNlY3VyZS5lbWFpbHNydnIuY29tghh3d3cuc2VjdXJlLmVtYWlsc3J2ci5j
b20wggGABgorBgEEAdZ5AgQCBIIBcASCAWwBagB3ALvZ37wfinG1k5Qjl6qSe0c4
V5UKq1LoGpCWZDaOHtGFAAABaDf6Nt0AAAQDAEgwRgIhAJDqOzt2LWqviVrjKGFL
UCPuu/HWeuILG/7VuDwJWWYYAiEAvCaXH3lSCRWOgGquaz9lW3uITCuKQP0TOOMv
JPbcN/IAdwBep3P531bA57U2SH3QSeAyepGaDIShEhKEGHWWgXFFWAAAAWg3+jcn
AAAEAwBIMEYCIQCxU8IX94IoSwsrpo6zJoUMO4uNGuTkpLSY0h/KWbspqQIhAIy4
XfY5RtTTLpB3EFLXMyQSL9/gyNpfJ1OtbYtOkL0pAHYA8JWkWfIA0YJAEC0vk4iO
rUv+HUfjmeHQNKawqKqOsnMAAAFoN/o5AAAABAMARzBFAiAePxbn6JuVUkYjBVnF
MPHeqyqAaYpdwyGxaC3Cz4WZhAIhAPFXU3e0+7GkNMjXFPQ6UMd55zeUJcxakFIt
ggm7ioLYMA0GCSqGSIb3DQEBCwUAA4IBAQAkLuNWuHt5GOXkzJlys09mg22+MnhF
4y+abm7F54stsv0A2Gc4my4bEXOZ4ozf0g1Yjb/ZVlSVrNC125CSnXd6bEcesjcn
c3oxO+9dFCQGMH4CZPVSoDKBk41+VP9IcnfibhSzV8wFXQh+Tt1OpRoNgqM888Es
JvYP9B2OgDvQFnDNAcJXM5fgX1CilyXqPtz2QYDNVgN8tuRSRPlaGTkZgGMsCO12
GjxLD5UGsxh5c08KSRgd4Uv6BRH/hE62spqvmDUDzuU+Qx9N4/Tz2ocv8LI8GlqV
RYOe+6lLe8t33yH0dnRWKGrpT8gWkul1qLHI9I7LYZMvMKdcxl8oBBGF
-----END CERTIFICATE-----
subject=OU = Domain Control Validated, OU = EssentialSSL, CN = secure.emailsrvr.com

issuer=C = GB, ST = Greater Manchester, L = Salford, O = COMODO CA Limited, CN = COMODO RSA Domain Validation Secure Server CA

---
لم يتم إرسال أسماء CA لشهادات العميل
---
تمت قراءة 6414 بايت وكتابة 319 بايت أثناء مصافحة SSL
التحقق: OK
---
جديد، (NONE)، التشفير هو (NONE)
مفتاح العمومي للخادم هو 2048 بت
إعادة المفاوضة الآمنة مدعومة
الضغط: NONE
التوسيع: NONE
لم يتم التفاوض على ALPN
جلسة SSL:
    Protocol  : TLSv1.2
    Cipher    : 0000
    Session-ID: 
    Session-ID-ctx: 
    Master-Key: 
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    Start Time: 1569003408
    Timeout   : 7200 (sec)
    Verify return code: 0 (ok)
    Extended master secret: no
---

يبدو أن المشكلة عادت إلى:

Jobs::HandledExceptionWrapper: Wrapped OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=error: dh key too small

(على الأقل في آلاف الإخفاقات القليلة الماضية.)

أيضًا: عيد ميلاد سعيد، @gerhard.

يشير ذلك الخطأ إلى أن خادم SMTP مُعد بشكل غير صحيح ويستخدم مفتاح DH يعتبره OpenSSL صغيرًا جدًا.

يبدو ذلك غير مرجح من راكسبيس، لكن يمكنني محاولة إشراك أحد فنييهم في هذا الأمر.

حسنًا، الخطأ يأتي من OpenSSL، وكما هو معروف لدينا نستخدم الإعدادات الافتراضية المقدمة من Debian / Ruby؟ :man_shrugging:

يبدو أن النسخة الجديدة من صورة الأساس تتضمن إصدارًا من OpenSSL ألغى أخيرًا خوارزميات التوقيع القديمة وغير الآمنة.

شبكة إنترانت الخاصة بشركتنا تحتوي على شهادة اعتماد Windows قديمة تستخدم خوارزمية MD5، مما أدى إلى تعطيل HTTPS تمامًا في تثبيت Discourse الخاص بي بعد الترقية. اشتكى Nginx من رسالة “SSL_CTX_use_certificate:ca md too weak” ورفض تحميل شهادة HTTPS.

توفر RHEL وCentOS آلية قديمة لإعادة تفعيل هذه الخوارزميات، لكنني لم أتمكن من العثور على إعداد مماثل للتوافق في Debian/Ubuntu.

أنا متأكد من أن المزيد من الأشخاص سيواجهون هذه المشكلة نظرًا لوجود عدد كبير من الشهادات القديمة وغير الآمنة المنتشرة، لكن لا يوجد الكثير مما يمكن فعله سوى استبدال الشهادات. أنصحك بمحاولة التواصل مع Rackspace مباشرة بشأن مشكلة البريد الإلكتروني.

هذه رسالة موجهة إلى @gerhard

أنا متأكد تقريبًا من أن هذا خلل. لقد طلبت من فني من Rackspace التحقق منه، وقدم لي المعلومات التالية حول مفتاح DH الخاص بهم:

إليك المعلومات المتاحة للعامة:

CA = Comodo Limited CA
Certificate Key Size = 2048 bit
Domain Name = mx1.emailsrvr.com and mx2.emailsrvr.com
Email server hostname = secure.emailsrvr.com
Mail Host Software (Identify the software and version is running on the MTA) =
ecelerity 2.2.3.49
Cipher Strength = AES256-SHA

أعتقد أن مفتاحًا بـ 2048 بت لا يمكن اعتباره بدقة “صغيرًا جدًا”.

من U.S. | Let There Be Change | Accenture

الحجم الأدنى الموصى به حاليًا لمعاملات DH هو 2048 بت. أي قيمة تساوي أو تقل عن 1024 تُعتبر غير آمنة.

حسنًا، دعنا نلقي نظرة على مفتاح DH باستخدام إصدار أقدم من Debian:

docker run --rm -it debian:stretch
apt update && apt install -y openssl
openssl s_client -connect secure.emailsrvr.com:465 | grep "Server Temp Key"

نعم، مفتاح DH صغير جدًا بالتأكيد:

Server Temp Key: DH, 1024 bits

أعتقد أن هذا أمر يجب على Rackspace إصلاحه. كحل بديل، يجب أن تتمكن من تعديل ملف /etc/ssl/openssl.cnf وإزالة السطر CipherString = DEFAULT@SECLEVEL=2 في نهاية الملف. يجب أن يلتقط Sidekiq إعدادات OpenSSL الجديدة بعد إعادة تشغيل الحاوية.

openssl s_client -connect secure.emailsrvr.com:465 | grep "Server Temp Key"
depth=3 C = SE, O = AddTrust AB, OU = AddTrust External TTP Network, CN = AddTrust External CA Root
verify return:1
depth=2 C = GB, ST = Greater Manchester, L = Salford, O = COMODO CA Limited, CN = COMODO RSA Certification Authority
verify return:1
depth=1 C = GB, ST = Greater Manchester, L = Salford, O = COMODO CA Limited, CN = COMODO RSA Domain Validation Secure Server CA
verify return:1
depth=0 OU = Domain Control Validated, OU = EssentialSSL, CN = secure.emailsrvr.com
verify return:1
Server Temp Key: DH, 1024 bits

العودة إلى الدردشة مع Rackspace.

تحديث من Rackspace:

شكراً لكم على صبركم، وشكراً لتوجيه انتباهنا إلى هذا الأمر. يمكننا تأكيد أن مفتاح DH الحالي لدينا هو 1024 بت. وقد أقرت فرق المنتجات والهندسة بضرورة زيادة هذا الحجم، وقد وضعت خططاً لمعالجة هذه المسألة.

لا أملك تاريخاً دقيقاً لك متى سيتم تطبيق الإصلاح، على الرغم من أن الهدف هو خلال هذا الشهر. وبمجرد زيادة حجم مفتاح DH، سنقوم بالتأكيد بتزويدكم بتحديث.

شكراً مرة أخرى لتوجيه انتباهنا إلى هذا الأمر! إذا كانت لديكم أي أسئلة أو مخاوف إضافية، يرجى إبلاغنا!

سأقوم بتحديث هذا الموضوع فور استلام إشعار بترقية مفتاح DH.

تمكنت من حل مشكلتي بتلك التصحيح، لكنه ليس واعدًا جدًا :slight_smile:
في إعادة البناء التالية سيختفي مرة أخرى، أليس كذلك؟ :slight_smile:

حسنًا، نأمل أن تقوم Rackspace بإصلاح المشكلة قبل أن تحتاج إلى إعادة البناء. وإلا، يمكنك تعديل openssl.cnf من داخل app.yml باستخدام أوامر sed لجعل التغيير دائمًا.

تحديث من Rackspace:

شكراً لكم على صبركم. تم تحديث حجم مفتاح DH ويتطابق الآن مع حجم مفتاح الشهادة. يرجى الاختبار وإخبارنا إذا كان لديكم أي أسئلة أو مخاوف إضافية!

تم التحقق:

openssl s_client -connect secure.emailsrvr.com:465 | grep "Server Temp Key"
depth=3 C = SE, O = AddTrust AB, OU = AddTrust External TTP Network, CN = AddTrust External CA Root
verify return:1
depth=2 C = GB, ST = Greater Manchester, L = Salford, O = COMODO CA Limited, CN = COMODO RSA Certification Authority
verify return:1
depth=1 C = GB, ST = Greater Manchester, L = Salford, O = COMODO CA Limited, CN = COMODO RSA Domain Validation Secure Server CA
verify return:1
depth=0 OU = Domain Control Validated, OU = EssentialSSL, CN = secure.emailsrvr.com
verify return:1
Server Temp Key: DH, 2048 bits

لقد قمت بالتحقق أيضاً من أنني أستطيع إرسال رسائل البريد الإلكتروني من تثبيتات Discourse الخاصة بي مرة أخرى. إذن (على الأقل فيما يتعلق بـ Rackspace) تم حل هذه المشكلة.