Vorrei sostenere la terminazione di SSL nel bilanciamento del carico (che sia sulla tua rete, o su un provider CDN o altro). Significa che LB può ispezionare il traffico e può fare un lavoro migliore di bilanciamento del carico. Significa anche che il tuo bilanciamento del carico è responsabile della gestione dei client lenti, delle implementazioni SSL interrotte e della sfocatura generale di Internet. È probabile che il bilanciamento del carico sia dotato di risorse migliori per farlo rispetto ai server back-end. Significa anche che il certificato SSL che il mondo vede sono tutti sul bilanciamento del carico (il che, si spera, li rende più facili da gestire).
L'alternativa qui è semplicemente bilanciare il carico delle connessioni TCP dai client ai server back-end. Poiché il LB non è in grado di ispezionare ciò che sta succedendo in questo modo, non può distribuire il carico in modo uniforme tra i server back-end e i server back-end devono gestire tutte le falle di Internet. Userei questo metodo solo se non ti fidi del tuo bilanciamento del carico, del provider CDN o di qualsiasi altra cosa.
Ricalcolare o meno dal bilanciamento del carico verso i server back-end è una questione di scelta personale e circostanza. Se hai a che fare con carte di credito o transazioni finanziarie, probabilmente sei regolato dai governi e quindi dovrai crittografare nuovamente. Probabilmente dovresti anche ricrittografare se il traffico tra il servizio di bilanciamento del carico e quello di back-end viaggia su reti non sicure. Se stai solo ospitando il sito web della tua azienda, potresti essere in grado di evitare l'overhead aggiuntivo della re-crittografia, se non ti interessa davvero gli aspetti di sicurezza di esso.
La ri-crittografia non aggiunge tanto carico quanto si potrebbe pensare. Di solito, il bilanciamento del carico sarà in grado di mantenere le connessioni persistenti ai server, quindi il costo SSL sarà piuttosto basso per quel 'hop' sulla rete.
L'ultima cosa a cui pensare è l'applicazione sui server back-end. Se tutto il traffico che arriva è HTTP, allora non può prendere decisioni basate sul protocollo che il client stava usando. Non può quindi dire "stai cercando di accedere alla pagina di accesso tramite HTTP, quindi ti reindirizzerò alla versione HTTPS della pagina", ad esempio. È possibile fare in modo che il bilanciamento del carico aggiunga un'intestazione HTTP per dire "questo proviene da HTTPS", ma tale intestazione avrebbe bisogno di una gestione speciale nell'applicazione. A seconda della situazione, potrebbe essere più semplice re-crittografare e consentire all'applicazione di funzionare in modo "predefinito" anziché richiedere una modifica specifica del sito.
In sintesi, direi: termina con il bilanciamento del carico e ricalni nuovamente ai tuoi server back-end. Se lo fai e noti qualche problema, puoi apportare delle modifiche se necessario.