Che tipo di certificato dovrei ottenere Se voglio proteggere una connessione tra un server web e un database?

8

So che la gente acquista certificati SSL per proteggere i propri siti. Che tipo di certificato dovrei ottenere se voglio crittografare una connessione tra un server di applicazioni e un database? A proposito, il server delle applicazioni potrebbe non essere accessibile tramite un URL pubblico.
La mia domanda è generale, ma la situazione reale è l'ambiente Windows su entrambi i server e RavenDb come database, se questo è importante

Nota : controllo entrambi i server e le relative impostazioni di sicurezza.

    
posta chester89 13.01.2016 - 13:34
fonte

3 risposte

4

È importante capire che i certificati forniscono integrità e la crittografia fornisce riservatezza. In altre parole; il certificato assicura che stai parlando con chi pensi di essere (se parte della catena di fiducia), ma non crittografa la tua connessione. Tuttavia, l'integrità e la riservatezza vanno quasi sempre mano nella mano, motivo per cui la chiave pubblica di un cliente è contenuta nel suo certificato. Una volta verificata l'identità dell'asset che serve il certificato, è possibile utilizzare la sua chiave pubblica per crittografare la connessione e negoziare ulteriori dettagli di crittografia.

In teoria sarebbe sufficiente generare semplicemente una coppia di chiavi sul server database e sul server applicazioni, e usare quelli per configurare la crittografia tra i due. Il fatto è che molti sistemi richiedono certificati per crittografare la connessione, così come detto, anche l'identità dell'altro lato della connessione può essere verificata. Poiché l'applicazione non è pubblicamente rivolta, il certificato non deve essere firmato da una CA. Dovresti solo generare una coppia di chiavi, creare un CSR e quindi firmarlo autonomamente. Non ci sono soldi da spendere qui.

È possibile utilizzare questi certificati autofirmati per configurare la crittografia tra il database e l'applicazione.

    
risposta data 13.01.2016 - 14:33
fonte
2

crittografare una connessione tra un server applicazioni e un database

Penso che dovresti solo stabilire un tunnel IPSEC tra il server del database e il server delle app. Ciò fornirà sia riservatezza che integrità. (ESP + AH)

Configurazione Riferimento

    
risposta data 13.01.2016 - 14:52
fonte
0

Se controlli entrambi i server, non avrai nemmeno bisogno di usare i certificati, basta installare su entrambi i lati la chiave pubblica attendibile per l'altro lato e utilizzarla per stabilire una connessione simile a SSL / TLS.

Tuttavia, probabilmente il modo più semplice per farlo è usare SSL / TLS e certificati, solo perché questo è l'unico modo per configurare una connessione protetta sulla maggior parte dei sistemi. Ma non è necessario acquistare un certificato su questo caso, è consentito utilizzare certificati autofirmati, poiché non si trarrà un vantaggio reale sull'utilizzo di una CA attendibile per emettere i certificati. La questione qui è quanto sei bravo a proteggere la chiave privata del database. Se si dispone di un certificato autofirmato o di un certificato firmato dalla CA per quella chiave, ma si perde la chiave privata, l'effetto è quasi lo stesso poiché il modo più rapido per attenuarlo sta rimuovendo l'affidabilità della chiave dell'applicazione e sostituendola per una nuova uno (su una CA si potrebbe anche chiedere la revoca del certificato, ma ciò richiederebbe più tempo per essere efficace).

Quello di cui hai bisogno è generare un certificato autofirmato per il database e configurare il database per usarlo. Quindi inserire questo certificato come attendibile nella configurazione della connessione dell'applicazione.

Forse puoi fare anche meglio, se il tuo database supporta la verifica dei certificati client, potresti avere anche un certificato nell'applicazione che è affidabile nel database. Pertanto, per connettere e stabilire una connessione affidabile, è necessario disporre di chiavi private sia client che server. Ma non so se qualche database lo supporta. Se si forniscono dettagli sul database che si utilizza, si potrebbe dare una risposta più dettagliata.

    
risposta data 13.01.2016 - 13:48
fonte

Leggi altre domande sui tag