Errori SSL di posta dopo l'aggiornamento a 2.4.0.beta4

Dopo l’aggiornamento alla versione 2.4.0.beta4, nessuna delle mie installazioni che utilizzano Rackspace per l’invio di email è riuscita a inviare email in uscita. Dato che il server di posta in uscita è, ancora una volta, Rackspace, presumo che le loro impostazioni SSL/TLS siano corrette (e, in ogni caso, sembrano funzionare in tutti i principali client di posta). Forse questo thread è correlato.

Tuttavia, dopo aver applicato gli aggiornamenti recenti (non sono sicuro di quale modifica esattamente), l’errore non è più lo stesso menzionato nel thread citato sopra, ma è diventato questo:

Jobs::HandledExceptionWrapper: Wrapped Net::ReadTimeout: Net::ReadTimeout con #\u003cTCPSocket:(closed)\u003e

Presumo che si tratti di un bug.

Modifica: Un altro thread correlato

\u003csmall\u003e@Gerhard\u003c/small\u003e

Puoi provare a connetterti al server SMTP dall’interno del contenitore Docker?

SMTP con StartTLS (predefinito, a meno che non abbia modificato DISCOURSE_SMTP_ENABLE_START_TLS in app.yml):

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

SMTP

openssl s_client -connect <hostname>:<port>

Con il flag -starttls, restituisce semplicemente “CONNECTED”. Senza -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:
---
Catena dei certificati
 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
---
Certificato del server
-----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

---
Nessun nome CA per certificato client inviato
---
L'handshake SSL ha letto 6414 byte e scritto 319 byte
Verifica: OK
---
Nuovo, (NESSUNO), Cipher è (NESSUNO)
La chiave pubblica del server è di 2048 bit
Rinegoziazione sicura È supportata
Compressione: NESSUNA
Espansione: NESSUNA
Nessuna negoziazione ALPN
Sessione SSL:
    Protocollo  : TLSv1.2
    Cipher    : 0000
    Session-ID: 
    Session-ID-ctx: 
    Master-Key: 
    Identità PSK: Nessuna
    Hint identità PSK: Nessuna
    Nome utente SRP: Nessuno
    Start Time: 1569003408
    Timeout   : 7200 (sec)
    Codice di ritorno verifica: 0 (ok)
    Segreto master esteso: no
---

Sembra che il problema sia tornato:

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

(Almeno per gli ultimi migliaia di fallimenti.)

Inoltre: Buon compleanno, @gerhard.

Quell’errore suggerisce che il server SMTP è configurato in modo errato e utilizza una chiave DH che OpenSSL considera troppo piccola.

Sembra piuttosto improbabile da parte di Rackspace, ma posso provare a coinvolgere uno dei loro tecnici in questo.

Beh, l’errore proviene da OpenSSL e per quanto ne so stiamo utilizzando i valori predefiniti forniti da Debian / Ruby? :man_shrugging:

Sembra che la nuova versione dell’immagine di base includa una versione di OpenSSL che ha finalmente disabilitato i vecchi algoritmi di firma insicuri.

La nostra intranet aziendale utilizza un vecchio CA di Windows che impiega MD5, il che ha completamente interrotto HTTPS nella mia installazione di Discourse dopo l’aggiornamento. Nginx ha segnalato l’errore “SSL_CTX_use_certificate:ca md too weak” e ha rifiutato di caricare il certificato HTTPS.

RHEL e CentOS dispongono di un meccanismo legacy per riabilitarli, ma non sono riuscito a trovare un’impostazione di compatibilità simile in Debian/Ubuntu.

Sono sicuro che sempre più persone si imbatteranno in questo problema, data la quantità di vecchi certificati insicuri ancora in circolazione, ma probabilmente non c’è molto da fare se non sostituire i certificati. Consiglio di contattare direttamente Rackspace per il problema relativo alla posta.

Questa è una domanda per @gerhard

Sono abbastanza sicuro che si tratti di un bug. Ho chiesto a un tecnico di Rackspace di esaminarlo e mi ha fornito le seguenti informazioni sulla loro chiave DH:

Ecco le informazioni pubblicamente disponibili:

CA = Comodo Limited CA
Dimensione chiave del certificato = 2048 bit
Nome di dominio = mx1.emailsrvr.com e mx2.emailsrvr.com
Nome host del server di posta = secure.emailsrvr.com
Software dell'host di posta (identificare il software e la versione in esecuzione sul MTA) =
ecelerity 2.2.3.49
Forza della cifratura = AES256-SHA

Penso che una chiave a 2048 bit non possa essere considerata correttamente “troppo piccola”.

Da U.S. | Let There Be Change | Accenture

La dimensione minima attualmente raccomandata per i parametri DH è di 2048 bit. Qualsiasi valore pari o inferiore a 1024 è considerato insicuro.

Ok, esaminiamo quindi la chiave DH utilizzando una versione più vecchia di 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"

Sì, la chiave DH è decisamente troppo piccola:

Server Temp Key: DH, 1024 bits

Direi che è un problema da risolvere per Rackspace. Come soluzione temporanea, dovresti poter modificare /etc/ssl/openssl.cnf e rimuovere CipherString = DEFAULT@SECLEVEL=2 alla fine del file. Sidekiq dovrebbe rilevare le nuove impostazioni di OpenSSL dopo il riavvio del contenitore.

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

Torniamo a chattare con Rackspace.

Aggiornamento da Rackspace:

Grazie per la vostra pazienza e grazie per averci segnalato la questione. Possiamo confermare che la nostra attuale chiave DH è di 1024 bit. I nostri team di Prodotto e Ingegneria hanno riconosciuto la necessità di aumentarne la dimensione e hanno già predisposto un piano per risolvere il problema.

Non ho una data esatta da comunicarvi per il rilascio della correzione, anche se l’obiettivo è di farlo entro questo mese. Non appena aumenteremo la dimensione della chiave DH, vi aggiorneremo senza indugio.

Grazie ancora per averci portato alla nostra attenzione! Se avete ulteriori domande o preoccupazioni, fatecelo sapere!

Aggiornerò questo thread non appena riceverò la notifica che la chiave DH è stata aggiornata.

Sono riuscito a risolvere il mio problema con quella patch, ma non è molto promettente :slight_smile:
Al prossimo rebuild sparirà di nuovo, giusto? :slight_smile:

Beh, speriamo che Rackspace risolva il problema prima che tu debba effettuare un rebuild. Altrimenti puoi modificare openssl.cnf direttamente da app.yml utilizzando i comandi sed per rendere la modifica permanente.

Aggiornamento da Rackspace:

Grazie per la pazienza. La dimensione della chiave DH è stata aggiornata e ora corrisponde alla dimensione della chiave del certificato. Si prega di eseguire dei test e farci sapere se avete ulteriori domande o preoccupazioni!

Verificato:

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

Ho ulteriormente verificato di essere di nuovo in grado di inviare email dalle mie installazioni di Discourse. Quindi (almeno per Rackspace) questo problema è risolto.