User Tools

Site Tools


doc:appunti:linux:sa:openvpn_easy_rsa

Differences

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

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
doc:appunti:linux:sa:openvpn_easy_rsa [2024/10/25 11:27] – [Configurazione del server] niccolodoc:appunti:linux:sa:openvpn_easy_rsa [2025/11/25 10:59] (current) – [OpenVPN con Easy-RSA] niccolo
Line 4: Line 4:
  
 In **Debian**, a partire dalla versione **8 Jessie**, esiste il pacchetto **easy-rsa** che facilita la configurazione di **OpenVPN** con chiavi RSA. Tale sistema si contrappone al metodo PSK, cioè a chiave segreta condivisa. Alcuni client più recenti non accettano di essere configurati con PSK, ad esempio il client Android di OpenVPN 3.2.5 In **Debian**, a partire dalla versione **8 Jessie**, esiste il pacchetto **easy-rsa** che facilita la configurazione di **OpenVPN** con chiavi RSA. Tale sistema si contrappone al metodo PSK, cioè a chiave segreta condivisa. Alcuni client più recenti non accettano di essere configurati con PSK, ad esempio il client Android di OpenVPN 3.2.5
 +
 +**ATTENZIONE**: Queste istruzioni sono per **easy-rsa v3.x**, non vanno bene con Debian 9 che fornisce la versione 2.
  
 Sul server OpenVPN si devono gestire tre componenti: Sul server OpenVPN si devono gestire tre componenti:
Line 32: Line 34:
  
 ===== Creazione della CA ===== ===== Creazione della CA =====
 +
 +FIXME :!: In **Debian 11 Bullseye** sembra che ci sia un bug: l'eseguibile **/etc/openvpn/easy-rsa/easyrsa** è in realtà un link simbolico a **/usr/share/easy-rsa/easyrsa**. Se eseguito dal link simbolico ignora il contenuto del file **/etc/openvpn/easy-rsa/vars**. Come workaround si deve fare una copia dell'eseguibile. :!:
  
 Prima di creare il certificato della Certification Authority e la relativa chiave privata, si deve editare il file **vars** per impostare almeno le seguenti variabili: Prima di creare il certificato della Certification Authority e la relativa chiave privata, si deve editare il file **vars** per impostare almeno le seguenti variabili:
Line 44: Line 48:
  
 set_var EASYRSA_CA_EXPIRE      3653 set_var EASYRSA_CA_EXPIRE      3653
-set_var EASYRSA_CERT_EXPIRE    1826+set_var EASYRSA_CERT_EXPIRE    3653
 </file> </file>
  
Line 54: Line 58:
 ./easyrsa build-ca nopass ./easyrsa build-ca nopass
 </code> </code>
- 
-Omettendo il parametro **nopass** viene chiesta una //passphrase//, che servirà in futuro a firmare i certificati rilasciati da questa CA (è in effetti la password necessaria a sbloccare la chiave privata della CA). Con il parametro **nopass** si evita di dover digitare una password in tutte le operazioni seguenti; la sicurezza è garantita dal fatto che solo root può accedere alla cartella **easy-rsa**. 
  
 Durante questo passaggio viene chiesto il **Common Name** della certification authority, in generale si può identificare il CN con il nome host della macchina che gestisce l'infrastruttura PKI. Durante questo passaggio viene chiesto il **Common Name** della certification authority, in generale si può identificare il CN con il nome host della macchina che gestisce l'infrastruttura PKI.
 +
 +Omettendo il parametro **nopass** viene chiesta una //passphrase//, che servirà in futuro a firmare i certificati rilasciati da questa CA (è in effetti la password necessaria a sbloccare la chiave privata della CA). Con il parametro **nopass** si evita di dover digitare una password in tutte le operazioni seguenti; la sicurezza è garantita dal fatto che solo root può accedere alla cartella **easy-rsa**.
  
 Di tutti i file creati, i più importanti sono **./pki/ca.crt** e **./pki/private/ca.key** che sono rispettivamente il certificato della CA (pubblico) e la relativa chiave privata. Oltre a quelli, sempre nella directory **./pki/**, ci sono le direcotry per contentere le revocation lists, ecc. Di tutti i file creati, i più importanti sono **./pki/ca.crt** e **./pki/private/ca.key** che sono rispettivamente il certificato della CA (pubblico) e la relativa chiave privata. Oltre a quelli, sempre nella directory **./pki/**, ci sono le direcotry per contentere le revocation lists, ecc.
 +
 +Per ispezionare il **certificato della CA** (validità, ecc.):
 +
 +<code>
 +openssl x509 -in pki/ca.crt -text -noout
 +</code>
  
 ===== Generazione di certificato e chiave per il server ===== ===== Generazione di certificato e chiave per il server =====
Line 134: Line 144:
 auth SHA256 auth SHA256
 # Avoid default BF-CBC cipher, because of its 64-bit block size. # Avoid default BF-CBC cipher, because of its 64-bit block size.
-cipher AES-256-CBC+# The --cipher option should not be used any longer with OpenVPN 2.6 in TLS mode. 
 +#cipher AES-256-CBC 
 +# Use --data-ciphers appending AES-256-CBC to the default value for clients using OpenVPN 2.3. 
 +data-ciphers AES-256-GCM:AES-128-GCM:CHACHA20-POLY1305:AES-256-CBC
 persist-key persist-key
 persist-tun persist-tun
Line 175: Line 188:
  
 <code> <code>
 +cd /etc/openvpn/easy-rsa
 ./easyrsa build-client-full [clientname] nopass ./easyrsa build-client-full [clientname] nopass
 </code> </code>
Line 206: Line 220:
 proto udp proto udp
 dev tun1 dev tun1
 +# Various options to fix MTU problems.
 +#tun-mtu 1500
 +mtu-test
 +mssfix 1331
 tls-client tls-client
 reneg-sec 60 reneg-sec 60
Line 215: Line 233:
 auth SHA256 auth SHA256
 auth-nocache auth-nocache
 +# Some Windows clients have problems with DCO like that:
 +# "Attempting to send data packet while
 +# data channel offload is in use. Dropping packet"
 +disable-dco
  
 <ca> <ca>
Line 315: Line 337:
 ./easyrsa gen-crl ./easyrsa gen-crl
 </code> </code>
 +
 +===== Scadenza e rinnovo dei certificati =====
 +
 +==== Certificato della Certification Authority ====
 +
 +Il certificato della CA è indicato dalla direttiva ''ca'' del file di configurazione del server (ad esempio **/etc/openvpn/server-rigacci-org.conf**):
 +
 +<file>
 +ca   /etc/openvpn/easy-rsa/pki/ca.crt
 +</file>
 +
 +Per visualizzare la scadenza:
 +
 +<code>
 +openssl x509 -text -noout -in /etc/openvpn/easy-rsa/pki/ca.crt
 +</code>
 +
 +=== Rinnovo certificato della CA ===
 +
 +FIXME
 +
 +==== Certificato del server ====
 +
 +Il certificato del server OpenVPN è individuato dalla direttiva ''cert'' del file di configurazione del server (ad esempio **/etc/openvpn/server-rigacci-org.conf**):
 +
 +<file>
 +cert /etc/openvpn/easy-rsa/pki/issued/server.crt
 +</file>
 +
 +Il file contiene in chiaro la //Validity// => //Not After//, altrimenti è possibile decodificare la parte PEM dello stesso file con il comando ''openssl'' visto sopra.
 +
 +=== Rinnovo certificato del server ===
 +
 +È opportuno revocare il vecchio certificato prima di generare quello nuovo. Nel file di configurazione OpenVPN del server si può infatti indicare una sola opzione ''cert'', pertanto non è possibile utilizzare contemporaneamente i due certificati a meno di non utilizzare due configurazioni separate.
 +
 +<code>
 +cd /etc/openvpn/easy-rsa
 +./easyrsa revoke server
 +./easyrsa gen-crl
 +</code>
 +
 +La CRL (Certificate Revocation List) va inclusa nella configurazione del server con l'opzione ''crl-verify'' (nel nostro esempio **/etc/openvpn/server-rigacci-org.conf**):
 +
 +<file>
 +crl-verify /etc/openvpn/easy-rsa/pki/crl.pem
 +</file>
 +
 +Il file **/etc/openvpn/easy-rsa/pki/index.txt** evidenzia la revoca con la lettera **R** ad inizio riga.
 +
 +La generazione del nuovo certificato (con la validità impostata nel file ''/etc/openvpn/easy-rsa/vars'', opzione ''EASYRSA_CERT_EXPIRE'') si effettua con:
 +
 +<code>
 +cd /etc/openvpn/easy-rsa
 +./easyrsa gen-req server nopass
 +./easyrsa sign-req server server
 +</code>
 +
 +==== Certificati dei client ====
 +
 +L'elenco dei certificati emessi per i client in corso di validità si ottiene con:
 +
 +<code>
 +cat /etc/openvpn/easy-rsa/pki/index.txt
 +</code>
 +
 +Una riga che inizia con **V** indica un certificato valido:
 +
 +<file>
 +V   250710072057Z   31AA3A66E6104488745CEE7F06153801   unknown /CN=server
 +V   250710132453Z   122D14AD065C5E91F7C8E4C04C79A756   unknown /CN=galaxy-tab-a8
 +V   250710301624Z   23EC990CF92D1F39651BEB16BF21A91F   unknown /CN=office-pc
 +</file>
 +
 +La scadenza di ognuno di essi si verifica leggendo il file relativo, che ha nome del tipo **//CN//.crt**:
 +
 +<code>
 +cat /etc/openvpn/easy-rsa/pki/issued/galaxy-tab-a8.crt
 +</code>
 +
 +Ciascun file contiene in chiaro la //Validity// => //Not After//, altrimenti è possibile decodificare la parte PEM dello stesso file con il comando ''openssl'' visto sopra.
 +
 +=== Rinnovo certificato di un client ===
 +
 +FIXME
 +
  
 ===== Web References ===== ===== Web References =====
doc/appunti/linux/sa/openvpn_easy_rsa.1729848447.txt.gz · Last modified: by niccolo