Come integrare i certificati client per i server upstream con nginx come proxy inverso?

2

Per il mio VPS privato, sto costruendo una configurazione per diverse applicazioni Web (Owncloud, ...) che dipende da una combinazione di diversi contenitori Docker. In primo piano, vorrei utilizzare un servizio web nginx come proxy inverso che inoltra le richieste HTTP in arrivo a seconda del request-uri ai servizi web "dietro".

Per creare tale impostazione utilizzando HTTPS, nginx richiede i certificati client per i cosiddetti servizi upstream, che si trovano dietro il proxy. La mia domanda ora è, da un punto di vista della sicurezza, se è necessario utilizzare certificati firmati da una CA. La mia idea è che il reverse proxy di nginx stesso sia raggiungibile da un dominio che è protetto da un certificato Let's Encrypt (o da un altro certificato firmato da una CA attendibile). Se ora chiamo https://example.com/owncloud , questo viene inoltrato al contenitore dell'applicazione per Owncloud che si trova sullo stesso VPS. Nginx ora ha bisogno di un certificato client che vorrei creare come autofirmato in base al fatto è una comunicazione interna su un solo sistema fisico tra quei contenitori.

Potresti darmi qualche consiglio sull'impostazione e sulla mia prospettiva di sicurezza su questo argomento? Ho dimenticato alcuni punti nella mia concezione?

    
posta Supahupe 10.11.2017 - 11:49
fonte

2 risposte

1

Da quanto ho capito tu hai

VPS with Docker w/ domain name 'my-domain' [
  docker-mysql hosting intern ????
  docker-owncloud hosting intern 3000 and internal connect docker-sql
  docker-nginx hosting extern 80/443 and internal connect docker-owncloud:3000)
]

hai 2x opzioni:

  • my-domain / ownCloud-sottocartella
  • ownCloud-subdomain.my-dominio

Se vuoi seguire il percorso della sottocartella, è possibile utilizzare il tuo certificato di dominio mio così com'è. Se stai seguendo la sottocartella, devi semplicemente impostare owncloud come HTTP (non https) e quindi usare location {} per proxy_pass da nginx a docker-owncloud

location /owncloud-subfolder/ {
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_pass http://docker-owncloud:3000;
    }

Il mio pref di personale è che è più semplice impostare sottodomini e gestire i certificati di crittografia per ciascuno di essi, ad esempio:

ca.ffeineaddiction.com
gogs.ca.ffeineaddiction.com
own.ca.ffeineaddiction.com

nel mio caso ffeineaddiction.com è il mio vps ( vultr ) e gogs.* e own.* sono mappati su un server fisico con 2 TB di spazio di archiviazione tramite tinc ( tutorial su setup tinc )

EDIT:

Re-read the question which is apparently different then what I understood it to be the first time. If I am understanding correctly now you are not worried about the external certs that Nginx is hosting but rather the Clientside cert in Nginx to connect to HTTPS instance of owncloud on 127.0.0.1 ... in my setup my solution to this is to not have one ... I simply use HTTP between OwnCloud and Nginx since its all internal to the box (or over TINC in my case).

    
risposta data 11.01.2018 - 22:30
fonte
0

Penso che tu abbia ragione. In effetti, l'uso di certificati autofirmati all'interno del limite di sicurezza può essere più sicuro finché si gestisce correttamente il certificato CA radice (ad esempio, mantenendolo offline e protetto).

Non c'è motivo per le risorse interne di utilizzare un certificato verificato esternamente da una CA pubblica.

    
risposta data 12.11.2017 - 16:00
fonte

Leggi altre domande sui tag