= 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 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 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 }}} (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 }}} (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 }}} (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.