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/01/10 17:19] – [Configurazione del server] niccolodoc:appunti:linux:sa:openvpn_easy_rsa [2025/02/06 12:01] (current) – [File di configurazione per il client] 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 44: Line 46:
  
 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 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.
 +
 +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 =====
  
 <code> <code>
-./easyrsa build-server-full server nopass+./easyrsa build-server-full server_name nopass
 </code> </code>
  
-In mancanza dell'opzione **nopass** viene chiesta una **PEM pass phrase** per proteggere la chiave del server, tale password andrà digitata tutte le volte che si avvia il server OpenVPN. La chiave privata verrà salvata in un file **./pki/private/server.key**, il certificato pubblico invece in **./pki/issued/server.crt**.+In mancanza dell'opzione **nopass** viene chiesta una **PEM pass phrase** per proteggere la chiave del server, tale password andrà digitata tutte le volte che si avvia il server OpenVPN. La chiave privata verrà salvata in un file **./pki/private/server_name.key**, il certificato pubblico invece in **./pki/issued/server_name.crt**. Il file con la request intermedia viene creato in **./pki/reqs/server_name.req**.
  
 Viene anche chiesta la password per sbloccare la chiave della CA, che deve essere usata per firmare il certificato del server. Viene anche chiesta la password per sbloccare la chiave della CA, che deve essere usata per firmare il certificato del server.
Line 94: Line 102:
 ===== Configurazione del server ===== ===== Configurazione del server =====
  
-Dopo aver creato tutti i file visti in precedenza, si può creare il file di configurazione OpenVPN, **/etc/openvpn/server.conf**:+Dopo aver creato tutti i file visti in precedenza, si può creare il file di configurazione OpenVPN, **/etc/openvpn/server_name.conf**:
  
 <file> <file>
Line 102: Line 110:
 verb 3 verb 3
 status /var/log/openvpn/openvpn-status.log status /var/log/openvpn/openvpn-status.log
-port 1194+lport 1194
 proto udp proto udp
 dev tun dev tun
 ca   /etc/openvpn/easy-rsa/pki/ca.crt ca   /etc/openvpn/easy-rsa/pki/ca.crt
-cert /etc/openvpn/easy-rsa/pki/issued/server.crt +cert /etc/openvpn/easy-rsa/pki/issued/server_name.crt 
-key  /etc/openvpn/easy-rsa/pki/private/server.key+key  /etc/openvpn/easy-rsa/pki/private/server_name.key
 dh   /etc/openvpn/easy-rsa/pki/dh.pem dh   /etc/openvpn/easy-rsa/pki/dh.pem
 # If you revoke some certificate, you need the Certificate Revocation List: # If you revoke some certificate, you need the Certificate Revocation List:
Line 150: Line 158:
  
 <code> <code>
-systemctl enable openvpn@server +systemctl enable openvpn@server_name 
-systemctl start openvpn@server+systemctl start openvpn@server_name
 </code> </code>
  
Line 206: 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
 key-direction 1 key-direction 1
-cipher AES-256-CBC+# The --cipher option is used to connect OpenVPN older than 2.6.0. 
 +#cipher AES-256-CBC 
 +# Newer connections using TLS uses the --data-ciphers option. 
 +data-ciphers AES-256-GCM:AES-128-GCM
 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>
doc/appunti/linux/sa/openvpn_easy_rsa.1704903568.txt.gz · Last modified: 2024/01/10 17:19 by niccolo