Perché OpenVPN richiede la condivisione sicura di certificati con i clienti?

11

I documenti di ubuntu su OpenVPN hanno questa parte nelle istruzioni:

Copy the following files to the client:

  • /etc/openvpn/ca.crt
  • /etc/openvpn/easy-rsa/keys/hostname.crt
  • /etc/openvpn/easy-rsa/keys/hostname.key
  • /etc/openvpn/ta.key

Non è possibile che uno schema vpn richieda solo un amministratore per installare le chiavi pubbliche del client al fine di fornire un accesso al client, invece di richiedere prima la condivisione di certificati sensibili? Ci sono altre VPN che fanno questo?

    
posta John Bachir 02.03.2012 - 20:58
fonte

3 risposte

12

Diamo un'occhiata a una ripartizione di tutti i file, se sono sensibili e da dove provengono.

/etc/openvpn/ca.crt

Disponibili pubblicamente, questo è il certificato per l'autorità di certificazione della tua VPN. Può essere condiviso con chiunque e consente al client di verificare il server VPN.

/etc/openvpn/easy-rsa/keys/hostname.crt

Questo è un certificato che identifica il cliente. È stato firmato dalla chiave privata del client e poi è stato firmato dalla chiave della CA.

/etc/openvpn/easy-rsa/keys/hostname.key

Questa è la chiave privata del cliente. Nella documentazione che si sta guardando, è stato generato sul server per comodità, in modo che il certificato del client possa essere firmato dalla chiave lì e quindi firmato dalla chiave CA. La chiave privata potrebbe essere generata e mantenuta sul client senza che il server la vedesse mai, ma ciò renderebbe il processo molto più complesso. Se sei interessato, fai qualche ricerca su Google o apri un'altra domanda per creare una CA privata: è un intero reparto.

/etc/openvpn/ta.key

Questo è un po 'speciale, quindi mi limiterò a incollare alcuni dei collegamenti che ho trovato al link :

tls-auth

The tls-auth directive adds an additional HMAC signature to all SSL/TLS handshake packets for integrity verification. Any UDP packet not bearing the correct HMAC signature can be dropped without further processing. The tls-auth HMAC signature provides an additional level of security above and beyond that provided by SSL/TLS. It can protect against:

  • DoS attacks or port flooding on the OpenVPN UDP port.
  • Port scanning to determine which server UDP ports are in a listening state.
  • Buffer overflow vulnerabilities in the SSL/TLS implementation.
  • SSL/TLS handshake initiations from unauthorized machines (while such handshakes would ultimately fail to authenticate, tls-auth can cut them off at a much earlier point).

Using tls-auth requires that you generate a shared-secret key that is used in addition to the standard RSA certificate/key:

openvpn --genkey --secret ta.key

Sommario

Sì, è possibile condividere tutto ciò che è necessario in chiaro, ad eccezione di ta.key, se si genera la chiave del cliente localmente e si ha un buon metodo per verificare di aver usato le chiavi giuste. Il sistema può essere sicuro senza ta.key - è solo una misura extra per limitare gli estranei. Detto questo, è davvero una buona misura.

    
risposta data 02.03.2012 - 22:24
fonte
3

Per dirla semplicemente: la chiave pubblica ( hostname.crt ) è derivata , matematicamente, dalla chiave privata, ed è usata per verificare che il client abbia effettivamente la chiave privata corretta (ed è in grado di decodificarlo nel caso in cui sia protetto).

Quindi, è assolutamente necessario ottenere la chiave privata per il client in modo sicuro - senza di essa, la chiave pubblica sul server è in qualche modo inutile.

Come per gli altri: ca.crt viene utilizzato dal client per verificare che si colleghi effettivamente al server corretto (e non a un MITM), e ta.key è un segreto condiviso per entrambi il client e il server (in pratica "qualcosa che hai").

Questo è un problema comune a tutte le soluzioni VPN che utilizzano certificati. Puoi usare solo il segreto condiviso (es. Nome utente + password quando usi PPTP), ma questo è 1) solitamente molto meno sicuro dato che la password non è molto lunga, e 2) non ti protegge dagli attacchi MITM.

    
risposta data 02.03.2012 - 22:24
fonte
1

Sì, è possibile configurare OpenVPN in modo che sia necessario installare solo la chiave pubblica del client e il cert del client sul server e solo installare la chiave pubblica del server e il certificato del server sul client.

Le chiavi pubbliche e i certificati non sono sensibili. Non sono confidenziali: possono essere tranquillamente condivisi con il mondo, se per qualche motivo lo si desidera. Non rivelano la chiave privata.

    
risposta data 03.03.2012 - 07:01
fonte

Leggi altre domande sui tag