doc:appunti:linux:sa:openvpn_easy_rsa
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
doc:appunti:linux:sa:openvpn_easy_rsa [2023/09/19 12:52] – [Elenco dei certificati creati e revoca] niccolo | doc:appunti:linux:sa:openvpn_easy_rsa [2025/06/24 11:42] (current) – [Configurazione 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' | ||
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 43: | Line 45: | ||
set_var EASYRSA_REQ_OU | set_var EASYRSA_REQ_OU | ||
- | set_var EASYRSA_CA_EXPIRE | + | set_var EASYRSA_CA_EXPIRE |
- | set_var EASYRSA_CERT_EXPIRE | + | set_var EASYRSA_CERT_EXPIRE |
</ | </ | ||
Line 52: | Line 54: | ||
< | < | ||
- | ./easyrsa build-ca | + | ./easyrsa build-ca |
</ | </ | ||
- | |||
- | Viene chiesta una **passphrase**, | ||
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' | 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' | ||
+ | |||
+ | Omettendo il parametro **nopass** viene chiesta una // | ||
Di tutti i file creati, i più importanti sono **./ | Di tutti i file creati, i più importanti sono **./ | ||
+ | |||
+ | Per ispezionare il **certificato della CA** (validità, ecc.): | ||
+ | |||
+ | < | ||
+ | openssl x509 -in pki/ca.crt -text -noout | ||
+ | </ | ||
===== Generazione di certificato e chiave per il server ===== | ===== Generazione di certificato e chiave per il server ===== | ||
< | < | ||
- | ./easyrsa build-server-full | + | ./easyrsa build-server-full |
</ | </ | ||
- | In mancanza dell' | + | In mancanza dell' |
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, **/ | + | Dopo aver creato tutti i file visti in precedenza, si può creare il file di configurazione OpenVPN, **/ |
< | < | ||
+ | # | ||
+ | # OpenVPN configuration for Easy-RSA server. | ||
+ | # | ||
verb 3 | verb 3 | ||
status / | status / | ||
- | port 1194 | + | lport 1194 |
proto udp | proto udp | ||
dev tun | dev tun | ||
ca / | ca / | ||
- | cert / | + | cert / |
- | key / | + | key / |
dh / | dh / | ||
# If you revoke some certificate, | # If you revoke some certificate, | ||
Line 121: | Line 132: | ||
ifconfig-pool-persist ipp.txt | ifconfig-pool-persist ipp.txt | ||
push " | push " | ||
+ | # Route only the the local LAN. | ||
push "route 192.168.0.0 255.255.255.0" | push "route 192.168.0.0 255.255.255.0" | ||
+ | # Route all the traffic through the VPN. | ||
+ | #push " | ||
keepalive 10 120 | keepalive 10 120 | ||
Line 128: | Line 142: | ||
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 |
+ | #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: | ||
persist-key | persist-key | ||
persist-tun | persist-tun | ||
Line 144: | Line 161: | ||
< | < | ||
- | systemctl enable openvpn@server | + | systemctl enable openvpn@server_name |
- | systemctl start openvpn@server | + | systemctl start openvpn@server_name |
</ | </ | ||
Line 190: | Line 207: | ||
pull | pull | ||
remote 10.0.1.189 1194 | remote 10.0.1.189 1194 | ||
+ | # Routing is pushed by the server. | ||
+ | # | ||
+ | # Route only the remote LAN. | ||
+ | #route 192.168.1.0 255.255.255.0 vpn_gateway | ||
+ | # Route all the internet traffic through the VPN. | ||
+ | # | ||
remote-cert-tls server | remote-cert-tls server | ||
resolv-retry infinite | resolv-retry infinite | ||
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: | ||
auth SHA256 | auth SHA256 | ||
auth-nocache | auth-nocache | ||
+ | # Some Windows clients have problems with DCO like that: | ||
+ | # " | ||
+ | # data channel offload is in use. Dropping packet" | ||
+ | disable-dco | ||
<ca> | <ca> | ||
Line 277: | Line 311: | ||
Viene aggiornato il file **pki/ | Viene aggiornato il file **pki/ | ||
- | Per vedere il contenuto della CRL e la sua **scadenza** si usa il comando: | + | Per vedere il **contenuto** della CRL e la sua **scadenza** si usa il comando: |
< | < | ||
openssl crl -in pki/crl.pem -noout -text | openssl crl -in pki/crl.pem -noout -text | ||
</ | </ | ||
+ | |||
+ | Nel' | ||
+ | |||
+ | < | ||
+ | Revoked Certificates: | ||
+ | Serial Number: 31185709CFD614AD3F87526A386B06CF | ||
+ | Revocation Date: Sep 19 10:45:13 2023 GMT | ||
+ | </ | ||
+ | |||
+ | Poichè la CRL ha una scadenza è necessario un cronjob che periodicamente la rinnovi (il tempo di vita predefinito è di 180 giorni). Ecco ad esempio uno script adeguato: | ||
+ | |||
+ | <code bash> | ||
+ | #!/bin/sh | ||
+ | # Generate a new Certificate Revocation List into the EasyRSA directory. | ||
+ | PATH=/ | ||
+ | cd / | ||
+ | ./easyrsa gen-crl | ||
+ | </ | ||
+ | |||
+ | ===== Scadenza e rinnovo dei certificati ===== | ||
+ | |||
+ | ==== Certificato della Certification Authority ==== | ||
+ | |||
+ | Il certificato della CA è indicato dalla direttiva '' | ||
+ | |||
+ | < | ||
+ | ca / | ||
+ | </ | ||
+ | |||
+ | Per visualizzare la scadenza: | ||
+ | |||
+ | < | ||
+ | openssl x509 -text -noout -in / | ||
+ | </ | ||
+ | |||
+ | === Rinnovo certificato della CA === | ||
+ | |||
+ | FIXME | ||
+ | |||
+ | ==== Certificato del server ==== | ||
+ | |||
+ | Il certificato del server OpenVPN è individuato dalla direttiva '' | ||
+ | |||
+ | < | ||
+ | cert / | ||
+ | </ | ||
+ | |||
+ | Il file contiene in chiaro la // | ||
+ | |||
+ | === 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 '' | ||
+ | |||
+ | < | ||
+ | cd / | ||
+ | ./easyrsa revoke server | ||
+ | ./easyrsa gen-crl | ||
+ | </ | ||
+ | |||
+ | La CRL (Certificate Revocation List) va inclusa nella configurazione del server con l' | ||
+ | |||
+ | < | ||
+ | crl-verify / | ||
+ | </ | ||
+ | |||
+ | Il file **/ | ||
+ | |||
+ | La generazione del nuovo certificato (con la validità impostata nel file ''/ | ||
+ | |||
+ | < | ||
+ | cd / | ||
+ | ./easyrsa gen-req server nopass | ||
+ | ./easyrsa sign-req server server | ||
+ | </ | ||
+ | |||
+ | ==== Certificati dei client ==== | ||
+ | |||
+ | L' | ||
+ | |||
+ | < | ||
+ | cat / | ||
+ | </ | ||
+ | |||
+ | Una riga che inizia con **V** indica un certificato valido: | ||
+ | |||
+ | < | ||
+ | V | ||
+ | V | ||
+ | V | ||
+ | </ | ||
+ | |||
+ | La scadenza di ognuno di essi si verifica leggendo il file relativo, che ha nome del tipo **// | ||
+ | |||
+ | < | ||
+ | cat / | ||
+ | </ | ||
+ | |||
+ | Ciascun file contiene in chiaro la // | ||
+ | |||
+ | === Rinnovo certificato di un client === | ||
+ | |||
+ | FIXME | ||
+ | |||
===== Web References ===== | ===== Web References ===== |
doc/appunti/linux/sa/openvpn_easy_rsa.1695120743.txt.gz · Last modified: by niccolo