Modo supportato per aggiungere "IncludeSubdomain" agli header STS

Ciao a tutti,

per le nostre istanze Discourse self-hosted attuali, dobbiamo aggiungere “IncludeSubDomains” alle nostre intestazioni STS a causa di questa aspettativa dei nostri scanner interni.

In precedenza, ottenevo questo utilizzando alcuni comandi sed in app.yml nei comandi personalizzati dopo la build per aggiornare /etc/nginx/conf.d/discourse.conf per includere 'add_header Strict-Transport-Security “max-age=31536000; includeSubDomains” always;'

così come:

 - replace:
      filename: "/etc/nginx/conf.d/outlets/discourse/20-https.conf"
      from: /add_header Strict-Transport-Security.+/
      to: add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
      global: true

  - replace:
      filename: "/etc/nginx/conf.d/outlets/server/20-https.conf"
      from: /add_header Strict-Transport-Security.+/
      to: add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
      global: true

Questo funzionava in precedenza. Tuttavia, ha smesso di funzionare. Ho letto che la creazione di un nuovo file outlet dovrebbe permettermi di aggiungerlo usando:

hooks:
  after_code:
    - file:
        path: /etc/nginx/conf.d/outlets/server/90-hsts.conf
        chmod: 444
        contents: |
          add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

Tuttavia, questo si traduce nell’avere due intestazioni STS presenti (una dal template SSL e una dal mio nuovo template). C’è un modo migliore per farlo in modo da non avere due intestazioni STS? Pensavo che nginx rispettasse l’ultima intestazione aggiunta e ignorasse l’intestazione del template SSL che contiene solo max-age=31536000; , quindi si tratta di un difetto? Grazie per qualsiasi guida possiate fornire.

L’utilizzo di set_header invece di add_header risolve il problema?

1 Mi Piace

Ci proverò e riferirò :slight_smile:

Se uso set_header ottengo un errore SSL alla ricostruzione, con il certificato non riconosciuto e il messaggio “connessione rifiutata” quando tento di caricare la pagina del forum.

Ulteriori informazioni, utilizziamo il nostro certificato SSL.

Questi due errori si escludono a vicenda…

Spiacente, nginx non ha set_header - ho ricordato male ed è di un altro strumento.

L’opzione più semplice è probabilmente modificare templates/web.ssl.template.yml con i nuovi valori desiderati.

1 Mi Piace

Farei prima quello dato che è il più facile. Una volta capito, la cosa successiva più semplice è copiare quel file altrove in modo da non avere problemi con i conflitti di git. La soluzione migliore sarebbe combinare la tua strategia attuale con un’altra riga per rimuovere l’altra impostazione in conflitto.

1 Mi Piace

Grazie per il vostro aiuto a entrambi!

1 Mi Piace