EasyRSA
EasyRSA (https://github.com/OpenVPN/easy-rsa) e` un insieme di script comodi per creare e gestire una piccola CA privata. Ideale per creare le chiavi per OpenVPN, puo` essere usata anche per altri scopi.
EasyRSA versione 3
Questi sono appunti su come usare EasyRSA versione 3 per generare una CA e dei certificati per OpenVPN.
Editare il files vars impostando i valori delle variabili che identificano la CA:
- EASYRSA_REQ_COUNTRY
- EASYRSA_REQ_PROVINCE
- EASYRSA_REQ_CITY
- EASYRSA_REQ_ORG
- EASYRSA_REQ_EMAIL
- EASYRSA_REQ_OU
Sempre nello stesso file vars, impostare la validita` e il numero di bit della chiave. (4096 bit, 50 anni)
- EASYRSA_KEY_SIZE 4096
- EASYRSA_CA_EXPIRE 18250
- EASYRSA_CERT_EXPIRE 18250
Impostare l'ambiente della CA (cancella tutte le chiavi precedentemente generate, se ci sono!!!) con il comando ./easyrsa init-pki
Creare la CA con il comando ./easyrsa build-ca nopass. Se volete impostare una password per il certificato della CA, togliete il parametro nopass
Creare una chiave per il server OpenVPN con il comando ./easyrsa build-server-full server nopass Questo comando genera una chiave di tipo "server" con nome file "server" (.key e .crt). Ovviamente il nome del file e` a vostra scelta, e ovviamente e` possibile generare piu` di una chiave di tipo server se e` necessario. Nel caso della chiave server, a meno di esigenze particolari, e` opportuno usare il parametro "nopass" per generare una chiave che non richiede password, visto che il server dovra` potersi avviare senza che qualcuno digiti la password della sua chiave.
Creare una chiave per ogni client, con il comando ./easyrsa build-client-full <nome-file-chiave> nopass. Se volete che il certificato abbia una password, togliete il parametro "nopass". La password puo` essere poi cambiata (o anche tolta o messa), volendo, dall'utente che usera` il certificato.
Creare il file contenente i parametri DH per il server con il comando ./easyrsa gen-dh, che e` lentissimo, specie se usate keysize 4096.
Fatto tutto questo, i files delle chiavi e dei certificati li trovate dentro alla directory pki. Nello specifico:
I files della CA (ca.crt) sono dentro a pki
I files delle chiavi (server e client) sono dentro a pki/private
I files dei certificati (server e client) sono dentro a pki/issued
Se volete vedere delle informazioni su un certificato generato in precedenza, potete usare ./easyrsa show-cert <nome-file-certificato> full. Il nome file e` senza ".crt" in fondo, e il parametro "full" puo` essere omesso per avere un output ridotto.
Se volete cambiare una password di una chiave privata generata in precedenza, potete usare ./easyrsa set-rsa-pass <nome-file-chiave> (il nome del file e` senza ".key" in fondo)
EasyRSA versione 2 e precedenti (obsoleto)
Questi sono appunti su come usare EasyRSA versione 2 e precedenti per generare una CA e dei certificati per OpenVPN.
Editare il file vars che si trova sotto easy-rsa e configurare in modo credibile i seguenti parametri: KEY_COUNTRY, KEY_PROVINCE, KEY_CITY, KEY_ORG e KEY_EMAIL. Nessuno di questi deve essere vuoto. Vale anche la pena di impostare KEY_SIZE a 2048, perche` siamo paranoici.
Se il file openssl.cnf e` gzippato (openssl.cnf.gz) occorre gunzipparlo.
Editare il file openssl.cnf e mettere il parametro "default_days" a un valore accettabile. Un anno e` troppo poco, io ho messo 10 anni. (3650 giorni)
- Creare i certificati della root CA privata, con i seguenti comandi:
. ./vars ./clean-all ./build-ca
Attenzione a come viene invocato "vars" nella prima riga, "punto spazio punto barra"... e` un po` molesto. Alle domande che verranno poste da "build-ca", e` necessario inserire dei valori dove manca il default, e NON MODIFICARE nulla dove il default e` presente. Ora la CA e` configurata. La chiave privata della CA dovrebbe essere supersegreta, da tenere in un floppy in una cassaforte in cantina con davanti un cartello "attenti al leopardo".
- Creare una coppia di chiavi per il server, come segue:
eseguire il comando ./build-key-server <nome file della chiave> (usare un nome tipo "server" puo` andare bene)
- Alle domande con un default, NON modificarlo. Dove non c'e` default, rispondere a senso.
- Alla fine, rispondere di si` alle domande "Sign the certificate?" e "1 out of 1 certificate requests certified, commit?".
- Creare una coppia di chiavi per il primo client. Ovviamente se ne possono creare quante se ne vogliono, ripetendo questa procedura in futuro.
eseguire il comando ./build-key <nome file della chiave> (usare un nome tipo "client1" puo` andare bene). Se si vuole che l'utente del client debba inserire una password per usare la chiave, usare build-key-pass al posto di build-key.
- Come per il server, rispondere alle domande che non hanno default con delle risposte sensate. Attenzione che il "Common Name" deve essere DIVERSO per ogni chiave generata.
- Alla fine, rispondere di si` alle domande "Sign the certificate?" e "1 out of 1 certificate requests certified, commit?".
Generare, per il server, il file contenente i parametri DH, con il comando ./build-dh. (roba da matematti). E` lentissimo, bersi una coca in attesa.