Il test per il certificato valido per abilitare force_https è rotto, lasciandolo disattivato quando dovrebbe essere attivo

Modifica: cambio questo in un bug. Force_https è ora disattivato sui siti dove prima era attivo, il che causa problemi.


Ho dedicato un po’ di tempo al debug di un sito dove “gli upload non funzionavano”. Dopo aver esaminato una serie di cose ovvie (ricostruzione, modalità sicura, considerare plugin non standard), ho finalmente notato un avviso di contenuto misto e ho attivato force_https, e ora tutto funziona di nuovo.

Pensavo che, un anno o due fa, force_https fosse attivo di default, ma recentemente ho sentito (o forse visto) più volte che le cose si rompevano perché force_https non era attivato.

C’è una ragione per non attivarlo di default?
[/quote]

Ho dedicato un po’ di tempo al debug di un sito dove “gli upload non funzionavano”. Dopo aver esaminato una serie di cose ovvie (ricostruzione, modalità sicura, considerare plugin non standard), ho finalmente notato un avviso di contenuto misto e ho attivato force_https, e ora tutto funziona di nuovo.

Pensavo che, un anno o due fa, force_https fosse attivo di default, ma recentemente ho sentito (o forse visto) più volte che le cose si rompevano perché force_https non era attivato.

C’è una ragione per non attivarlo di default?

1 Mi Piace

È abilitato automaticamente in discourse.conf se è presente un certificato valido.
Questo è effettivamente vero da circa un anno o due.

grep -q 'force_https' "/var/www/discourse/config/discourse.conf" || echo "force_https = 'true'" >> "/var/www/discourse/config/discourse.conf"

1 Mi Piace

Ah, grazie, Richard.

Quindi non sto impazzendo.

Il problema è che il test per un certificato valido fallisce:

# openssl verify -CAfile ca.cer fullchain.cer 
O = Digital Signature Trust Co., CN = DST Root CA X3
error 10 at 3 depth lookup: certificate has expired
error fullchain.cer: verification failed

E poi, se rimuovo mozilla/DST_Root_CA_X3.crt da /etc/ca-certificates.conf ed eseguo update-ca-certificates, ottengo questo:

C = US, O = Internet Security Research Group, CN = ISRG Root X1
error 2 at 2 depth lookup: unable to get issuer certificate
error fullchain.cer: verification failed

Nel browser viene visualizzato correttamente. E ho appena ricompilato questo contenitore oggi (quindi dovrebbe avere i certificati root aggiornati).

Non conosco abbastanza questa parte dei certificati per capire cosa stia succedendo. Posso usare curl per recuperare un certificato Let’s Encrypt dall’interno del contenitore (un test che falliva su un contenitore WordPress con cui stavo lavorando la settimana scorsa).

E non è solo un problema mio questa volta; recentemente alcune persone hanno risolto attivando force_https.

1 Mi Piace

Sì, questo sembra correlato alla scadenza del certificato root di Let’s Encrypt, in particolare solo se il problema è iniziato dopo venerdì scorso.

Cosa restituisce il comando openssl version (all’interno del contenitore Docker)? (A causa di questo).

2 Mi Piace
OpenSSL 1.1.1d  10 set 2019

Quindi forse è necessario “ISRG Root X1 nel trust store”? Ma vedo mozilla/ISRG_Root_X1.crt in ca-certificates.conf.

1 Mi Piace

Oddio. E ho passato due giorni a debuggare un problema che pensavo fosse una questione complessa tra Rails, Ansible e Python, ma si è rivelato che il mio server, che in passato aveva force_https attivo, ora non lo ha più, e una serie di richieste sono state inviate a http://myserver invece che a https://myserver.

Questo sembra proprio un bug.

2 Mi Piace

Sì, questo è effettivamente un bug.

La settimana scorsa stavamo spostando un forum su un altro server e abbiamo raggiunto il limite di riemissione di Let’s Encrypt (massimo 5 a settimana per lo stesso hostname). All’inizio non sapevamo perché, ma questo bug ha causato il rilascio di un nuovo certificato ad ogni build e, dopo cinque tentativi, abbiamo raggiunto il limite di frequenza. Non abbiamo sollevato alcun allarme perché il certificato precedente era ancora presente sul server.

Finché non abbiamo spostato il forum su un nuovo server. A quel punto non abbiamo ottenuto un nuovo certificato. Avremmo potuto copiarlo dal vecchio server, ma non abbiamo mai capito cosa lo avesse causato.

acme.sh è bloccato alla versione 2.9.0, mentre la versione master è alla 3.0.1 e include una funzionalità per impostare una catena predefinita, che sospetto possa essere correlata.

3 Mi Piace

Ehi @Falco. Vuoi dare un’occhiata a questo? Sembra che tu abbia molta esperienza in queste faccende. Ci ho lavorato per diverse ore nell’ultima settimana o due e ancora non capisco cosa stia succedendo.

1 Mi Piace

Sì, l’ho assegnato a me stesso nel weekend. Qui è un lungo ponte festivo, ma darò un’occhiata questa settimana il prima possibile.

2 Mi Piace

Ah, ecco la parte che mi sono perso. Scusa se ti ho disturbato.

Il nostro lungo weekend di festa è appena finito e la festa di Nostra Signora di Aparecida non era sul mio calendario. Ma ora lo so.

Grazie.

2 Mi Piace

Questo è stato risolto da

5 Mi Piace

Grazie @Falco per il tuo duro lavoro su questo :slight_smile:

2 Mi Piace