User Tools

Site Tools


openvpn:openvpn_con_certificati

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
openvpn:openvpn_con_certificati [2025/09/20 12:51] – created - external edit 127.0.0.1openvpn:openvpn_con_certificati [2025/09/21 19:05] (current) kurgan
Line 1: Line 1:
-===== Configurazione per connettere diversi dispositivi portatili a un concentratore Linux con chiavi asimmetriche =====+====== Configurazione per connettere diversi dispositivi portatili a un concentratore Linux con chiavi asimmetriche ======
  
 Questa dovrebbe essere la configurazione piu` sicura possibile per l'uso con tanti portatili che si connettono individualmente alla rete. Utilizzo certificati e chiavi per l'autenticazione e un pool di indirizzi dinamico. Questa configurazione, cosi` com'e` fatta, accetta fino a 64 client contemporaneamente in quanto usa 4 indirizzi ip (di una subnet privata da 256 indirizzi) per ogni pc linkato. Le chiavi identificano il client, il che significa che è necessario creare una chiave diversa per ogni client, e che se due client che usano la stessa chiave si connettono nello stesso momento, le loro connessioni continueranno a flappare (andare e venire) in quanto si "ammazzano" a vicenda l'una con l'altra. L'uso di una stessa chiave su piu` client è consentito, ma solo se sono connessi uno alla volta. Peraltro siccome la chiave identifica l'utente, non è una buona idea farlo. Questa dovrebbe essere la configurazione piu` sicura possibile per l'uso con tanti portatili che si connettono individualmente alla rete. Utilizzo certificati e chiavi per l'autenticazione e un pool di indirizzi dinamico. Questa configurazione, cosi` com'e` fatta, accetta fino a 64 client contemporaneamente in quanto usa 4 indirizzi ip (di una subnet privata da 256 indirizzi) per ogni pc linkato. Le chiavi identificano il client, il che significa che è necessario creare una chiave diversa per ogni client, e che se due client che usano la stessa chiave si connettono nello stesso momento, le loro connessioni continueranno a flappare (andare e venire) in quanto si "ammazzano" a vicenda l'una con l'altra. L'uso di una stessa chiave su piu` client è consentito, ma solo se sono connessi uno alla volta. Peraltro siccome la chiave identifica l'utente, non è una buona idea farlo.
Line 7: Line 7:
 Per generare i certificati per l'autenticazione uso Easy-RSA, ma potrei usare qualsiasi sistema che mi permetta di mettere in piedi una CA privata. Per generare i certificati per l'autenticazione uso Easy-RSA, ma potrei usare qualsiasi sistema che mi permetta di mettere in piedi una CA privata.
  
- +===== Impostazione server Linux =====
-==== Impostazione server Linux ====+
  
   * Prima di tutto, installare il pacchetto openvpn   * Prima di tutto, installare il pacchetto openvpn
-  * Occorre crearsi una propria CA interna per generare i certificati che useremo per identificare il server e i client. Per fare questo usiamo Easy RSA [[../EasyRSA]]+  * Occorre crearsi una propria CA interna per generare i certificati che useremo per identificare il server e i client. Per fare questo usiamo Easy RSA [[..:EasyRSA]]
   * Attenzione: la CA va conservata in una macchina sicura. Se qualcuno si impossessa delle chiavi della CA puo` generare certificati validi!   * Attenzione: la CA va conservata in una macchina sicura. Se qualcuno si impossessa delle chiavi della CA puo` generare certificati validi!
   * Seguendo quanto indicato qui [[../EasyRSA]] dovrete di fatto fare 4 passi:    * Seguendo quanto indicato qui [[../EasyRSA]] dovrete di fatto fare 4 passi: 
Line 18: Line 17:
     * Creare una chiave per il vostro primo client (che non sia di tipo server)     * Creare una chiave per il vostro primo client (che non sia di tipo server)
     * Creare il file contenente i parametri DH, per il server. (procedura molto lenta)     * Creare il file contenente i parametri DH, per il server. (procedura molto lenta)
-  * Eventualmente (non è obbligatorio) possiamo creare una chiave statica per autenticare i pacchetti TLS, cosi`: {{{openvpn --genkey --secret tls-auth.key}}} (Suggerimento: stando in  {{{/etc/openvpn}}} quando si da` il comando, la chiave, con nome ''tls-auth.key'', viene generata gia` nel posto giusto). Questa chiave ha lo scopo di fornire una ulteriore protezione soprattutto contro attacchi di denial of service. Non è necessaria, e certi clienti OpenVPN (per esempio quelli integrati nei telefoni voip Grandstream) non la supportano. In questo caso, sarete costretti a non usarla nemmeno sul server. +  * Eventualmente (non è obbligatorio) possiamo creare una chiave statica per autenticare i pacchetti TLS, cosi`: ''openvpn --genkey --secret tls-auth.key'' (Suggerimento: stando in  ''/etc/openvpn'' quando si da` il comando, la chiave, con nome ''tls-auth.key'', viene generata gia` nel posto giusto). Questa chiave ha lo scopo di fornire una ulteriore protezione soprattutto contro attacchi di denial of service. Non è necessaria, e certi clienti OpenVPN (per esempio quelli integrati nei telefoni voip Grandstream) non la supportano. In questo caso, sarete costretti a non usarla nemmeno sul server. 
-  * Copiare i files "ca.crt", "dh.pem" (o altro nome del file dh, a seconda di come l'avete chiamato), "server.crt" e "server.key" dalla directory delle chiavi della CA (dentro {{{pki/private}}} {{{pki/issued}}} nel percorso della CA) sul server in ''/etc/openvpn''+  * Copiare i files "ca.crt", "dh.pem" (o altro nome del file dh, a seconda di come l'avete chiamato), "server.crt" e "server.key" dalla directory delle chiavi della CA (dentro ''pki/private'' ''pki/issued'' nel percorso della CA) sul server in ''/etc/openvpn''
   * Copiare i files "ca.crt", "tls-auth.key" (se lo volete usare), "client1.crt" e "client1.key" sul client (la posizione di questi files dipende dal client, in ogni caso tenete conto che servono questi files sul client)   * Copiare i files "ca.crt", "tls-auth.key" (se lo volete usare), "client1.crt" e "client1.key" sul client (la posizione di questi files dipende dal client, in ogni caso tenete conto che servono questi files sul client)
-  * Creare un file di configurazione in ''/etc/openvpn'' con un nome tipo "server.conf", cosi` fatto: +  * Creare un file di configurazione in ''/etc/openvpn'' con un nome tipo "server.conf", cosi` fatto:<code ->
-<code>+
 # configurazione per openvpn 2.5 # configurazione per openvpn 2.5
 # per gestire un server per molti client # per gestire un server per molti client
Line 132: Line 130:
 verb 3 verb 3
 </code> </code>
- 
   * Lanciare ''/etc/init.d/openvpn start'' sul server.   * Lanciare ''/etc/init.d/openvpn start'' sul server.
  
- +===== Configurazione per i client Windows =====
-==== Configurazione per i client Windows ====+
  
 La configurazione per i client windows e linux e` praticamente identica. Qui descrivo quella per windows, ma per Linux basta prendere i files di configurazione e metterli in /etc/openvpn (in linux il file di confiugurazione non ha estensione .ovpn ma .conf). La configurazione per i client windows e linux e` praticamente identica. Qui descrivo quella per windows, ma per Linux basta prendere i files di configurazione e metterli in /etc/openvpn (in linux il file di confiugurazione non ha estensione .ovpn ma .conf).
  
-  * Installare il client openvpn per windows, scaricandolo da http://www.openvpn.net, nella sezione "Community software / downloads". Il link diretto, che non e` detto che funzioni sempre, e` questo: https://openvpn.net/community-downloads/+  * Installare il client openvpn per windows, scaricandolo da [[http://www.openvpn.net]], nella sezione "Community software / downloads". Il link diretto, che non e` detto che funzioni sempre, e` questo: [[https://openvpn.net/community-downloads/]]
   * Raccogliere tutti i files necessari per il client, che sono "ca.crt", "tls-auth.key" (se lo volete usare), "client1.crt" e "client1.key"   * Raccogliere tutti i files necessari per il client, che sono "ca.crt", "tls-auth.key" (se lo volete usare), "client1.crt" e "client1.key"
-  * Creare il file di configurazione con il nome che volete voi, purche` abbia estensione "ovpn". Ad esempio, il file potrebbe essere ''ufficio.ovpn''. Il contenuto sarà questo: +  * Creare il file di configurazione con il nome che volete voi, purche` abbia estensione "ovpn". Ad esempio, il file potrebbe essere ''ufficio.ovpn''. Il contenuto sarà questo:<code ->
-<code>+
 client client
 dev tun dev tun
Line 168: Line 163:
 verb 3 verb 3
 </code> </code>
-  * Tutti i files che abbiamo messo assieme vanno quindi messi nella directory delle configurazioni del client VPN, che è (alla versione attuale del client) {{{c:\Program Files\OpenVPN\config}}} oppure ''c:\Users\$USERNAME\OpenVPN\config'' 
  
 +  * Tutti i files che abbiamo messo assieme vanno quindi messi nella directory delle configurazioni del client VPN, che è (alla versione attuale del client) ''c:\Program Files\OpenVPN\config'' oppure ''c:\Users\$USERNAME\OpenVPN\config''
  
 ---- ----
  
-==== Configurazione "monolitica" con i certificati entrocontenuti ====+===== Configurazione "monolitica" con i certificati entrocontenuti =====
  
 Volendo, è possibile creare un unico file di configurazione, che contiene anche i vari certificati, chiavi, e files "accessori". Questo file può essere usato da tutti i client a me noti ad oggi (windows, android, ios, linux) ed è più comodo da gestire rispetto al gruppo di files che abbiamo visto in precedenza. Volendo, è possibile creare un unico file di configurazione, che contiene anche i vari certificati, chiavi, e files "accessori". Questo file può essere usato da tutti i client a me noti ad oggi (windows, android, ios, linux) ed è più comodo da gestire rispetto al gruppo di files che abbiamo visto in precedenza.
  
-Per farlo, in pratica si copia e incolla il contenuto dei vari files di certificato (ca.crt, client.crt, client.key, tls-auth.key) dentro al file di configurazione, all'interno dei vari blocchi <xxx> </xxx>. E` sufficiente seguire lo schema qui sotto. Notare il comando {{{key-direction 1}}} che sostituisce il parametro {{{1}}} della voce ''tls-auth tls-auth.key 1'' dell'esempio precedente. +Per farlo, in pratica si copia e incolla il contenuto dei vari files di certificato (ca.crt, client.crt, client.key, tls-auth.key) dentro al file di configurazione, all'interno dei vari blocchi <xxx> </xxx>. E` sufficiente seguire lo schema qui sotto. Notare il comando ''key-direction 1'' che sostituisce il parametro ''1'' della voce ''tls-auth tls-auth.key 1'' dell'esempio precedente.
- +
-** In fondo alla pagina c'è uno script per convertire configurazioni standard in monolitiche (lo script gira su linux, ma ovviamente genera config per qualsiasi client) **+
  
 +** Qui trovate uno script che genera queste configurazioni partendo dai files singoli: {{ :openvpn:unifier.sh |}} **
  
 Tutte le voci di configurazione che non fanno riferimento a dei files vanno lasciate esattamente come prima. Tutte le voci di configurazione che non fanno riferimento a dei files vanno lasciate esattamente come prima.
  
-** Nota bene:** se la chiave e` crittata, anziche` la voce {{{-----BEGIN RSA PRIVATE KEY-----}}} e relativo end, occorre usare la voce ''-----BEGIN ENCRYPTED PRIVATE KEY-----'' e relativo end. +** Nota bene:** se la chiave e` crittata, anziche` la voce ''-----BEGIN RSA PRIVATE KEY-----'' e relativo end, occorre usare la voce ''-----BEGIN ENCRYPTED PRIVATE KEY-----'' e relativo end.
- +
-<code>+
  
 +<code ->
 # qui vanno tutte le voci di config  # qui vanno tutte le voci di config 
 # che non fanno riferimento a dei files # che non fanno riferimento a dei files
Line 213: Line 206:
 </tls-auth> </tls-auth>
 </code> </code>
 +
  
openvpn/openvpn_con_certificati.1758372660.txt.gz · Last modified: by 127.0.0.1