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/12/17 09:09] – [Creazione della CA] niccolodoc:appunti:linux:sa:openvpn_easy_rsa [2025/06/10 10:42] (current) – [Certificato del server] niccolo
Line 32: Line 32:
  
 ===== 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 54: Line 56:
 ./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.
Line 66: Line 68:
 openssl x509 -in pki/ca.crt -text -noout openssl x509 -in pki/ca.crt -text -noout
 </code> </code>
- 
-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. 
  
 ===== Generazione di certificato e chiave per il server ===== ===== Generazione di certificato e chiave per il server =====
Line 214: Line 214:
 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 223: Line 227:
 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 323: Line 331:
 ./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.1734422967.txt.gz · Last modified: by niccolo