# Il test per il certificato valido per abilitare force\_https è rotto, lasciandolo disattivato quando dovrebbe essere attivo

**URL:** https://meta.discourse.org/t/test-for-valid-cert-to-enable-force-https-is-broken-leaving-it-off-when-it-should-be-on/205547
**Category:** Bug
**Created:** [8 Ottobre 2021, 1:53pm UTC](https://meta.discourse.org/t/test-for-valid-cert-to-enable-force-https-is-broken-leaving-it-off-when-it-should-be-on/205547 "2021-10-08T13:53:57Z")
**Posts on this page:** 13
**Page:** 1

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [8 Ottobre 2021, 1:53pm UTC](https://meta.discourse.org/t/test-for-valid-cert-to-enable-force-https-is-broken-leaving-it-off-when-it-should-be-on/205547/1 "2021-10-08T13:53:57Z")

</div>

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?

---

<div class="post-metadata">

### Author: ![RGJ](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/rgj/32/523185_2.png) [@RGJ](https://meta.discourse.org/u/RGJ)
#### Post date: [8 Ottobre 2021, 4:26pm UTC](https://meta.discourse.org/t/test-for-valid-cert-to-enable-force-https-is-broken-leaving-it-off-when-it-should-be-on/205547/2 "2021-10-08T16:26:15Z")

</div>

È [abilitato automaticamente](https://github.com/discourse/discourse_docker/blob/e60174cfa035d591b7bd36c34c7abe8581e9a56b/templates/web.letsencrypt.ssl.template.yml#L103) 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"`

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [8 Ottobre 2021, 4:45pm UTC](https://meta.discourse.org/t/test-for-valid-cert-to-enable-force-https-is-broken-leaving-it-off-when-it-should-be-on/205547/3 "2021-10-08T16:45:19Z")

</div>

Ah, grazie, Richard.

Quindi non sto impazzendo.

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

```plaintext
# 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:

```plaintext
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`](https://meta.discourse.org/search?q=force_https%20order%3Alatest).

---

<div class="post-metadata">

### Author: ![RGJ](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/rgj/32/523185_2.png) [@RGJ](https://meta.discourse.org/u/RGJ)
#### Post date: [8 Ottobre 2021, 5:21pm UTC](https://meta.discourse.org/t/test-for-valid-cert-to-enable-force-https-is-broken-leaving-it-off-when-it-should-be-on/205547/4 "2021-10-08T17:21:21Z")

</div>

Sì, questo sembra correlato alla [scadenza del certificato root di Let’s Encrypt](https://letsencrypt.org/docs/dst-root-ca-x3-expiration-september-2021/), 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](https://community.letsencrypt.org/t/openssl-client-compatibility-changes-for-let-s-encrypt-certificates/143816)).

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [8 Ottobre 2021, 5:55pm UTC](https://meta.discourse.org/t/test-for-valid-cert-to-enable-force-https-is-broken-leaving-it-off-when-it-should-be-on/205547/5 "2021-10-08T17:55:17Z")

</div>

```plaintext
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`.

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [8 Ottobre 2021, 8:26pm UTC](https://meta.discourse.org/t/test-for-valid-cert-to-enable-force-https-is-broken-leaving-it-off-when-it-should-be-on/205547/6 "2021-10-08T20:26:02Z")

</div>

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.

---

<div class="post-metadata">

### Author: ![RGJ](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/rgj/32/523185_2.png) [@RGJ](https://meta.discourse.org/u/RGJ)
#### Post date: [11 Ottobre 2021, 5:46pm UTC](https://meta.discourse.org/t/test-for-valid-cert-to-enable-force-https-is-broken-leaving-it-off-when-it-should-be-on/205547/7 "2021-10-11T17:46:34Z")

</div>

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](https://github.com/discourse/discourse_docker/commit/015b3daddb386d10422ac68be696fd6b20a9af2a), mentre la versione master è alla 3.0.1 e include una [funzionalità per impostare una catena predefinita](https://github.com/acmesh-official/acme.sh/issues/3717), che sospetto possa essere correlata.

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [12 Ottobre 2021, 2:08pm UTC](https://meta.discourse.org/t/test-for-valid-cert-to-enable-force-https-is-broken-leaving-it-off-when-it-should-be-on/205547/9 "2021-10-12T14:08:01Z")

</div>

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.

---

<div class="post-metadata">

### Author: ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### Post date: [12 Ottobre 2021, 2:38pm UTC](https://meta.discourse.org/t/test-for-valid-cert-to-enable-force-https-is-broken-leaving-it-off-when-it-should-be-on/205547/10 "2021-10-12T14:38:46Z")

</div>

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

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [12 Ottobre 2021, 2:48pm UTC](https://meta.discourse.org/t/test-for-valid-cert-to-enable-force-https-is-broken-leaving-it-off-when-it-should-be-on/205547/11 "2021-10-12T14:48:29Z")

</div>

> [@Falco](#):
>
> Sì, l’ho assegnato a me stesso nel weekend.

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.

---

<div class="post-metadata">

### Author: ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### Post date: [25 Ottobre 2021, 6:44pm UTC](https://meta.discourse.org/t/test-for-valid-cert-to-enable-force-https-is-broken-leaving-it-off-when-it-should-be-on/205547/12 "2021-10-25T18:44:24Z")

</div>

Questo è stato risolto da

> <https://github.com/discourse/discourse_docker/commit/8e2ccee0f2989885632c27c7f33a87719d3838ec>
>
> The old root was getting openssl confused, resulting in a new
> certificate on eve…ry rebuild that could easily trigger existing let's
> encrypt rate-limits.

---

<div class="post-metadata">

### Author: ![IAmGav](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/iamgav/32/235598_2.png) [@IAmGav](https://meta.discourse.org/u/IAmGav)
#### Post date: [25 Ottobre 2021, 6:58pm UTC](https://meta.discourse.org/t/test-for-valid-cert-to-enable-force-https-is-broken-leaving-it-off-when-it-should-be-on/205547/13 "2021-10-25T18:58:09Z")

</div>

Grazie @Falco per il tuo duro lavoro su questo 🙂

---

<div class="post-metadata">

### Author: ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)
#### Post date: [27 Ottobre 2021, 6:13am UTC](https://meta.discourse.org/t/test-for-valid-cert-to-enable-force-https-is-broken-leaving-it-off-when-it-should-be-on/205547/14 "2021-10-27T06:13:12Z")

</div>


