Nell'articolo precedente sul gestore dei certificati Lemur, non abbiamo utilizzato alcuna autorità di certificazione (CA) radice di terze parti per i certificati client. Pertanto, in questo tutorial, la PKI verrà configurata utilizzando CFSSL (SSL di Cloudflare) e integrata con il progetto Lemur. Attualmente, non esiste alcun documento che aiuti l'utente a integrare CFSSL con la configurazione di Lemur.
Nota:poiché utilizziamo CFSSL come autorità root di terze parti, quindi prima dobbiamo configurarlo su un computer separato (tuttavia lo configuriamo sulla stessa scatola Lemur) e successivamente cambia il file conf lemur per utilizzare CFSSL per il firmare il certificato.
Installazione di CFSSL
CloudFlare SSL è implementato utilizzando il linguaggio di programmazione "Go", quindi è necessaria l'installazione del pacchetto "go" sulla macchina. Il comando seguente installerà il pacchetto richiesto sulla macchina.
1. Installa Vai
Il pacchetto Go verrà installato dal codice sorgente.
wget https://dl.google.com/go/go1.10.1.linux-amd64.tar.gz
Estrarre l'archivio scaricato e installarlo nella posizione desiderata sul sistema. Lo stiamo installando nella directory /usr/local. Puoi anche metterlo nella posizione desiderata sul sistema.
tar -xzvf go1.10.1.linux-amd64.tar.gz
mv go /usr/local
Dopo l'installazione del pacchetto Go, è anche necessario impostare una variabile di ambiente per il binario Go. (Puoi aggiungerlo nel profilo utente in modo da renderlo un'impostazione permanente). Di solito devi impostare 3 variabili di ambiente come GOROOT , GOPATH e PERCORSO .
GOROOT è la posizione in cui il pacchetto Go è installato sul tuo sistema.
export GOROOT=/usr/local/go
GOPATH è la posizione della tua directory di lavoro.
export GOPATH=$HOME/go
Ora imposta il PERCORSO variabile a cui accedere diventa binario a livello di sistema.
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
2. Comando Prova Vai
Ora digita il comando "vai" nel terminale. Mostrerà l'output come il seguente screenshot.
go
3. Installa CFSSL
Dobbiamo installare CFSSL su questa piattaforma Ubuntu. Quando le variabili di ambiente richieste per GO sono impostate correttamente, il processo di installazione di CFSSL sarà semplice.
un. Il comando seguente scaricherà l'utilità CFSSL e la compilerà nel percorso $GOPATH/bin/.
go get -u github.com/cloudflare/cfssl/cmd/cfssl
b. Il comando seguente installerà il plug-in json del pacchetto CFSSL. È necessario perché CFSSL gestisce le richieste JSON.
go get -u github.com/cloudflare/cfssl/cmd/cfssljson
c. installa semplicemente tutti i programmi di CFSSL usando il comando indicato di seguito. Questo comando scaricherà, creerà e installerà tutti i programmi di utilità (inclusi cfssl, cfssljson e mkbundle tra gli altri) nella directory $GOPATH/bin/.
go get -u github.com/cloudflare/cfssl/cmd/...
Come mostrato di seguito, esegui il comando "cfssl" nel terminale e mostrerà tutte le operazioni supportate dalla PKI CFSSL.
Impostazione PKI di CFSSL
Ora, l'applicazione cfssl verrà utilizzata per configurare la PKI per il progetto Lemur. I file di configurazione "CSR_configuration" e "signing_configuration" sono importanti nella configurazione di CFSSL. Il file di configurazione "CSR" contiene la configurazione per la coppia di chiavi che stai per creare e la configurazione "Signing" come dice il nome, imposta le regole di configurazione.
Crea CA ROOT
Per la CA radice, controlla il seguente file di configurazione CSR (che chiameremo csr_ROOT_CA.json):
- csr_ROOT_CA.json
{ "CN": "MY-ROOT-CA", "key": { "algo": "ecdsa", "size": 256 }, "names": [ { "C": "UK", "L": "London", "O": "My Organisation", "OU": "My Organisational Unit Inside My Organisation" } ], "ca": { "expiry": "262800h" } }
Di seguito viene fornita una breve spiegazione dei diversi campi.
- Il file di configurazione segue lo schema di denominazione X.509, quindi sono obbligatori i seguenti campi:
- CN (Nome comune) – Il nome dell'entità. Nel caso della CA radice, è il nome della CA radice;
- C (Paese)
- L (Posizione)
- O (Organizzazione)
- UO (Unità Organizzativa)
- Ora, alcuni campi specifici sono specifici di CFSSL:
- KEY – Definisce le caratteristiche delle chiavi:
- Algo – Specifica l'algoritmo. Può essere "rsa" o "ecdsa", rispettivamente per algoritmi RSA o ECDSA. Ora, l'ECDSA è sempre consigliato se i dispositivi legacy non sono rilevanti, ma questo vale solo per i dispositivi con meno di due o tre anni. RSA deve essere utilizzato diversamente.
- size – Specifica la dimensione della chiave. 256 deve essere utilizzato per la chiave ecdsa. Per le chiavi RSA, 2048 o 4096 sono i valori consigliati.
- ca – Definisce le caratteristiche della CA e in questo caso la validità della chiave, in ore, sì, in ore. In questo caso sono 30 anni (24x356x30), in quanto l'autorità di root durerà il tempo previsto per la sicurezza della chiave di root.
- KEY – Definisce le caratteristiche delle chiavi:
Ora, esegui il comando seguente per creare effettivamente la CA radice per il lemure.
cfssl gencert -initca csr_ROOT_CA.json | cfssljson -bare root_ca
Il comando precedente creerà i seguenti file sulla macchina.
- root_ca.csr – La richiesta di firma del certificato CA radice, che non ha senso per la CA radice e quindi non verrà mai utilizzata. Poiché la CA radice è autofirmata.
- root_ca.pem – Il certificato CA radice. Questo è il file che devi distribuire il più possibile.
- root_ca.key – Questa è la chiave CA radice. Tieni questo file al sicuro, come se la tua vita dipendesse da esso. Per una CA radice pubblica questa è in realtà la verità.
La CA radice è autofirmata, quindi vai al passaggio successivo per la generazione di una CA intermedia.
CA intermedia
La generazione di CA Intermedia non è obbligatoria ma corrisponde a una best practice. L'obiettivo finale di avere una CA intermedia è avere un passaggio intermedio in termini di sicurezza. Generalmente. la chiave della CA radice viene conservata in un computer offline e viene utilizzata solo quando è necessario firmare un certificato CA intermedio.
Il file di configurazione "csr_INTERMEDIATE_CA.json" è necessario per creare una CA intermedia.
- csr_INTERMEDIATE_CA.json – La richiesta di firma del certificato per la CA intermedia
{ "CN": "My-Intermediate-CA", "key": { "algo": "ecdsa", "size": 256 }, "names": [ { "C": "UK", "L": "London", "O": "My Organisation", "OU": "My Organisational Unit Inside My Organisation" } ], "ca": { "expiry": "42720h" } }
Il file "root_to_intermediate_ca.json" contiene la configurazione della firma della CA radice.
{
"signing": { "default": { "usages": ["digital signature","cert sign","crl sign","signing"], "expiry": "262800h", "ca_constraint": {"is_ca": true, "max_path_len":0, "max_path_len_zero": true} } } }
Questo file contiene i parametri più rilevanti per un certificato.
- usi:quali utilizzi possono essere eseguiti dalla firma del certificato. Le opzioni supportate da CFSSL sono le seguenti:
- “firma digitale”,
- "segno di certificazione",
- "segno crl",
- "firma"
- ecc
- is_ca:questo campo è applicabile solo per generare certificati CA intermedi e consente al certificato generato di firmare altri certificati. Se lasci questo campo su un certificato di dispositivo finale, verrà rifiutato dai browser e dai sistemi operativi più comuni.
Il comando seguente creerà una CA intermedia rispetto alla configurazione sopra menzionata.
cfssl gencert -initca csr_INTERMEDIATE_CA.json | cfssljson -bare intermediate_ca
Il comando precedente creerà i seguenti file della CA intermedia.
- intermediate_ca.csr – La richiesta di firma del certificato della CA intermedia.
- intermediate_ca.pem – Il certificato CA intermedio, non firmato da nessuno, e quindi inutile.
- intermediate_ca.key:questa è la chiave CA intermedia. Mantieni questo file sicuro e protetto.
Il comando seguente mostra la firma del certificato della CA intermedia da parte della CA radice.
cfssl sign -ca root_ca.pem -ca-key root_ca-key.pem -config root_to_intermediate_ca.json intermediate_ca.csr | cfssljson -bare intermediate_ca
Il comando precedente firmerà il file intermedi_ca.pem. Ora l'impostazione della CA radice e intermedia è completa. È importante mantenere le chiavi CA radice ei file di configurazione al sicuro. Il passaggio successivo consiste nel creare un certificato per il dispositivo client o il cliente. Qui integreremo la configurazione CFSSL con il progetto Lemur e verrà generato il certificato del cliente.
Esegui PKI di CFSSL
Per eseguire la PKI basata su CFSSL, vai all'interno della directory certs ed esegui il comando seguente.
cfssl serve -address 192.168.10.151 -ca root_ca.pem -ca-key root_ca-key.pem -port 8888
L'output del comando precedente sarà il seguente.
[email protected]:/home/john/Desktop/certs# cfssl serve -address 192.168.10.151 -ca root_ca.pem -ca-key root_ca-key.pem -port 8888
2018/05/20 16:35:18 [INFO] Initializing signer
2018/05/20 16:35:19 [WARNING] couldn't initialize ocsp signer: open : no such file or directory
2018/05/20 16:35:19 [INFO] endpoint '/api/v1/cfssl/scaninfo' is enabled
2018/05/20 16:35:19 [WARNING] endpoint 'ocspsign' is disabled: signer not initialized
2018/05/20 16:35:19 [INFO] endpoint '/' is enabled
2018/05/20 16:35:19 [INFO] endpoint '/api/v1/cfssl/info' is enabled
2018/05/20 16:35:19 [INFO] endpoint '/api/v1/cfssl/gencrl' is enabled
2018/05/20 16:35:19 [INFO] endpoint '/api/v1/cfssl/scan' is enabled
2018/05/20 16:35:19 [WARNING] endpoint 'crl' is disabled: cert db not configured (missing -db-config)
2018/05/20 16:35:19 [INFO] endpoint '/api/v1/cfssl/certinfo' is enabled
2018/05/20 16:35:19 [WARNING] endpoint 'revoke' is disabled: cert db not configured (missing -db-config)
2018/05/20 16:35:19 [INFO] bundler API ready
2018/05/20 16:35:19 [INFO] endpoint '/api/v1/cfssl/bundle' is enabled
2018/05/20 16:35:19 [INFO] setting up key / CSR generator
2018/05/20 16:35:19 [INFO] endpoint '/api/v1/cfssl/newkey' is enabled
2018/05/20 16:35:19 [INFO] endpoint '/api/v1/cfssl/init_ca' is enabled
2018/05/20 16:35:19 [INFO] endpoint '/api/v1/cfssl/sign' is enabled
2018/05/20 16:35:19 [WARNING] endpoint 'authsign' is disabled: {"code":5200,"message":"Invalid or unknown policy"}
2018/05/20 16:35:19 [INFO] endpoint '/api/v1/cfssl/newcert' is enabled
2018/05/20 16:35:19 [INFO] Handler set up complete.
2018/05/20 16:35:19 [INFO] Now listening on 192.168.10.151:8888
L'indirizzo IP della macchina è 192.168.10.151 e la porta è 8888 . Consenti a questa porta nel firewall di utilizzare CFSSL.
NOTA:il comando seguente è solo una guida all'utilizzo dell'utilità cfssl.
{ cfssl serve [-address address] [-ca cert] [-ca-bundle bundle] \
[-ca-key key] [-int-bundle bundle] [-int-dir dir] [-port port] \
[-metadata file] [-remote remote_host] [-config config] \
[-responder cert] [-responder-key key] [-db-config db-config] }
Ora, la configurazione di CFSSL è completa ed è in esecuzione sulla macchina. Il passo successivo è l'integrazione di CFSSL con Lemur.
Configurazione lemur per PKI di CFSSL
Ora, il file di configurazione "lemur.conf.py" del Lemur verrà modificato (come URL, ROOT e chiavi intermedie). Il file di configurazione includerà le informazioni sul CFSSL. Il percorso del file di configurazione del lemure è "/home/lemur/.lemur/lemur.conf.py".
CFSSL_URL ="http://192.168.10.151:8888"
CFSSL_ROOT ="""-----BEGIN CERTIFICATE-----
MIICcjCCAhegAwIBAgIUahfYPc4RpK92G1ZHhu3q9URvf+8wCgYIKoZIzj0EAwIw
9UmEM4IEd2j8/w4WdTYaBE5EzwIhAN3oW9iAmjcyzC/7BPIY/Sr+twig/+XwnQ8T
hKXP2OHd
-----END CERTIFICATE-----"""
CFSSL_INTERMEDIATE ="""-----BEGIN CERTIFICATE-----
MIICfDCCAiKgAwIBAgIUEeb8Duel8wySG61vCM2UEUD15XQwCgYIKoZIzj0EAwIw
qM9lE82tku/b6SMxAlBByQ==
-----END CERTIFICATE-----"""
Ora, esegui il comando "lemur start" per utilizzare lemur.conf.py con l'impostazione CFSSL.
Crea certificati utilizzando CFSSL
Seguendo il nostro precedente articolo sul Lemur, accedi alla dashboard per creare certificati client utilizzando la CA radice di CFSSL. Prima di tutto, crea una nuova Certification Authority e seleziona il plugin CFSSL come Root CA.
1. impostazione dei diversi parametri della nuova autorità.
2. seleziona il plug-in CFSSL appena configurato come CA radice.
Dopo aver impostato la nuova autorità di certificazione nel Lemur, il passaggio successivo consiste nel generare un certificato utilizzando il plug-in CFSSL appena configurato.