Crittografia in caso di architettura distribuita

0

Dispongo dell'infrastruttura delle applicazioni come segue: client Web - > load balancer - > Apache (server web) - > Weblogic (application server).

Potrei capire che in caso di richiesta HTTPS, si verificherà un handshake SSL, verrà creato un tunnel e tutti i dati per la sessione verranno crittografati.

Ma non ho potuto ottenere una risposta chiara per la seguente domanda:

  1. Sono sicuro al 90% che il bilanciamento del carico non parteciperà (o nulla a che fare con) all'handshake SSL perché è solo per il bilanciamento del carico, quindi inoltrerà ad Apache in base al suo bilanciamento. Potresti confermare?
  2. Tutte le risorse dell'applicazione sono in Weblogic (application server), quindi mi sento che finalmente la crittografia e l'handshake SSL (o tunnel) avverranno da Weblogic, e sarebbe Weblogic che selezionerà una delle suite di crittografia dal browser web, per la crittografia.
    • Sono corretto?
    • Se sì, quale sarebbe il ruolo di Apache nell'handshake SSL? Apache inoltrerà semplicemente la richiesta a Weblogic e il tunnel end-to-end sarà tra il browser Web e Weblogic?
  3. Ho letto che il numero massimo di connessioni è controllato da Apache, quindi mi suggerisce che ci sarebbe un handshake SSL e un tunnel tra il browser Web e Apache. E se ciò dovesse succedere, non sarebbe eccessivo perché ci sarebbero 2 handshake SSL e crittografia (browser Web - Apache e Apache - Weblogic)?
  4. Se Weblogic o Apache eseguiranno la selezione della suite di crittografia?
    • Potrei identificare che per la selezione della suite di cifratura Weblogic può essere controllato usando Dweblogic.security.SSL.Ciphersuites=TLS_RSA_WITH_AES_256_CBC_SHA256" ma come può essere controllato in Apache?
posta hagrawal 16.08.2015 - 22:27
fonte

2 risposte

4

Penso che tu stia cercando Terminazione SSL , ciò che in pratica accade è che il bilanciamento del carico gestisce tutto il processo TLS / SSL e inoltra le richieste ai server finali. Questo approccio mira a semplificare l'implementazione e la gestione delle connessioni SSL, immagina un servizio di bilanciamento del carico che serva 20 server back-end, richiederebbe 20 macchine per poter gestire le connessioni dallo stesso dominio, e se decidi di aggiornare i tuoi certificati questo è molto di lavoro. Se tuttavia lo si implementa con il bilanciamento del carico, tutti i server back-end non devono preoccuparsi di questo processo.

Web Client --> HTTPS --> Load Balancer --> HTTP --> Backend Servers

Una cosa da considerare è che ci si fida che la connessione tra il servizio di bilanciamento del carico e i server back-end sia protetta, il che per la maggior parte degli schemi di server non è realmente un problema.

Ecco un articolo su come implementalo per NginX

    
risposta data 17.08.2015 - 09:52
fonte
2
  1. Non sono profondamente informato sul bilanciamento del carico, ma: a seconda del tuo servizio di bilanciamento del carico, la terminazione SSL / TLS potrebbe o non potrebbe essere gestita da esso.

    1. Se si utilizza HAProxy o nginx come bilanciamento del carico, questi funzionano sul livello / livello applicazione 7 - qui TLS + HTTP - e gestiranno la terminazione TLS, quindi tutte le configurazioni TLS saranno presenti e le richieste non crittografate quindi essere inoltrato ai server Apache
    2. Se si utilizza Linux Virtual Server o qualsiasi altro servizio di bilanciamento del carico che lavora sul livello di trasporto / layer 4, la connessione stessa viene inoltrata ai server Apache, quindi il load balancer stesso non gestisce la terminazione TLS.
  2. Poiché si utilizza l'hosting virtuale, non è possibile eseguire la terminazione TLS (pubblica) in Weblogic: il protocollo HTTP è incapsulato all'interno del protocollo TLS e Apache deve essere a conoscenza dell'host virtuale selezionato. Ciò è possibile con l'estensione TLS "Server Name Indication" (SNI), in cui il TLS indica il nome dell'host virtuale, per verificare l'host virtuale rispetto al certificato corretto. Quindi Apache deve aprire sia i pacchetti TLS e HTTP, selezionare l'host virtuale e inoltrare i pacchetti non crittografati ai server delle applicazioni. Di conseguenza, la terminazione TLS deve essere presente nel bilanciamento del carico (1.1.) O negli Apache (2.).

  3. Nel caso in cui la terminazione TLS sia sugli Apache, è necessario configurarla lì: chiavi, protocolli TLS e crittografie, sessioni TLS, intestazioni OCSP, HSTS e HPKP, ecc. Opzionalmente, è possibile connettere gli Apache a i server delle applicazioni con TLS, ma probabilmente non è necessario se si opera in una rete interna in cui si ha fiducia che non vi siano intercettazioni. Se lo desideri comunque, dovrai configurare i server delle applicazioni con una configurazione TLS.

  4. Una buona risorsa per la configurazione di TLS è link . Esistono esempi per Apache, ma anche raccomandazioni generali per altri server, ad esempio se si desidera configurare Weblogic per ricevere connessioni TLS.

risposta data 17.08.2015 - 11:20
fonte

Leggi altre domande sui tag