Intégration de CFSSL avec le gestionnaire de certificats Lemur

Dans l’article précédent sur le gestionnaire de certificatsLemur, nous n’avons pas utilisé d’autorité de certification (CA) racine tierce pour les certificats des clients. Par conséquent, dans ce tutoriel, l’ICP sera configurée à l’aide de CFSSL (Cloudflare’s SSL) et intégrée au projet Lemur. Actuellement, il n’existe aucun document qui aide l’utilisateur à intégrer CFSSL à la configuration de Lemur.

Remarque : Comme nous utilisons CFSSL en tant qu’autorité racine tierce, nous devons d’abord l’installer sur une machine séparée (mais nous l’avons installé sur la même boîte Lemur), puis modifier le fichier conf de Lemur pour utiliser CFSSL pour la signature du certificat.

Installer CFSSL

Le SSL de CloudFlare est mis en œuvre à l’aide du langage de programmation « Go ». L’installation du paquet « go » est donc nécessaire sur la machine. La commande suivante installera le paquetage requis sur la machine.

1. Installe Go

Le paquet Go sera installé à partir du code source.

wget https://dl.google.com/go/go1.10.1.linux-amd64.tar.gz 

Installer Go

Extrais l’archive téléchargée et installe-la à l’emplacement souhaité sur le système. Nous l’installons sous le répertoire /usr/local. Tu peux aussi l’installer à l’emplacement souhaité sur le système.

tar -xzvf go1.10.1.linux-amd64.tar.gz
mv go /usr/local

Décompresse les fichiers sources de go

Après l’installation du paquet Go, il est également nécessaire de définir une variable d’environnement pour le binaire Go. (Tu peux l’ajouter dans le profil utilisateur pour en faire un paramètre permanent).En général, tu dois définir 3 variables d’environnement : GOROOT,GOPATH etPATH.

GOROOT estl’emplacement où le paquetage Go est installé sur ton système.

export GOROOT=/usr/local/go

GOPATHest l’emplacement de ton répertoire de travail.

export GOPATH=$HOME/go

Définis maintenant la variable PATHpour accéder au binaire Go dans tout le système.

export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

Configure l'environnement de construction Go

2. Teste la commande Go

Tape maintenant la commande « go » dans le terminal. La sortie s’affichera comme la capture d’écran suivante.

go

Teste la commande Go

3. Installe CFSSL

Nous devons installer CFSSL sur cette plateforme Ubuntu. Si les variables d’environnement requises pour GO sont correctement définies, le processus d’installation de CFSSL sera facile.

a. La commande suivante téléchargera l’utilitaire CFSSL et le construira dans le chemin $GOPATH/bin/.

go get -u github.com/cloudflare/cfssl/cmd/cfssl

b. La commande suivante installera le plugin json du paquet CFSSL, qui est nécessaire car CFSSL gère les demandes JSON.

 go get -u github.com/cloudflare/cfssl/cmd/cfssljson

c. Installe simplement tous les programmes de CFSSL à l’aide de la commande ci-dessous. Cette commande téléchargera, construira et installera tous les programmes utilitaires (y compris cfssl, cfssljson et mkbundle, entre autres) dans le répertoire $GOPATH/bin/.

go get -u github.com/cloudflare/cfssl/cmd/...

Installer CFSSL

Comme indiqué ci-dessous, exécute la commande « cfssl » dans le terminal et elle affichera toutes les opérations prises en charge par l’ICP CFSSL.

Run cfssl command

Configuration de l’ICP de CFSSL

Maintenant, l’application cfssl sera utilisée pour configurer l’ICP pour le projet Lemur. Les fichiers de configuration « CSR_configuration » et « signing_configuration » sont importants pour la configuration de CFSSL. Le fichier de configuration « CSR » contient la configuration de la paire de clés que tu es sur le point de créer et la configuration « Signing », comme son nom l’indique, définit les règles de configuration.

Créer l’AC RACINE

Pour l’AC racine, vérifie le fichier de configuration CSR suivant (que nous appellerons 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"
 }
}

Configuration de l'ICP de CFSSL

Tu trouveras ci-dessous une brève explication des différents champs.

  • Le fichier de configuration suit le schéma de dénomination X.509, les champs suivants sont donc obligatoires :
    • CN (Common Name) – Le nom de l’entité. Dans le cas de la Root CA, il s’agit du Root CA Name ;
    • C (Pays)
    • L (Emplacement)
    • O (Organisation)
    • OU (Unité organisationnelle)
  • Maintenant, un certain nombre de champs spécifiques sont propres à CFSSL :
    • KEY – Définit les caractéristiques des clés :
      • Algo – Spécifie l’algorithme. Peut être ‘rsa’ ou ‘ecdsa’, pour les algorithmes RSA ou ECDSA, respectivement. Maintenant, ECDSA est toujours recommandé si les anciens appareils ne sont pas pertinents, mais cela ne s’applique qu’aux appareils de moins de deux ou trois ans. Sinon, RSA doit être utilisé.
      • size – Spécifie la taille de la clé. 256 doit être utilisé pour la clé ECDSA. Pour les clés RSA, 2048 ou 4096 sont les valeurs recommandées.
    • ca – Définit les caractéristiques de l’AC et dans ce cas la validité de la clé, en heures, oui, en heures. Dans ce cas, c’est 30 ans (24x356x30), car l’autorité racine durera aussi longtemps que tu as prévu la sécurité de la clé racine.

Maintenant, exécute la commande suivante pour créer réellement l’autorité racine pour le Lémurien.

cfssl gencert -initca csr_ROOT_CA.json | cfssljson -bare root_ca

 Crée l'AC racine pour le Lemur

La commande ci-dessus créera les fichiers suivants sur la machine.

  • root_ca.csr – La demande de signature du certificat de la root ca, qui n’a pas de sens pour la root ca, et ne sera donc jamais utilisée. Comme la root ca est auto-signée.
  • root_ca.pem – Le certificat de la Root CA. C’est le fichier que tu et à distribuer autant que possible.
  • root_ca.key – C’est la clé de l’autorité de certification racine. Garde ce fichier en sécurité, comme si ta vie en dépendait. Pour une Root CA publique, c’est en fait la vérité.

La Root CA est auto-signée, alors passe à l’étape suivante pour la génération d’une CA intermédiaire.

CA intermédiaire

La génération d’une AC intermédiaire n’est pas obligatoire mais correspond à une meilleure pratique. L’objectif final d’une AC intermédiaire est d’avoir une étape intermédiaire en termes de sécurité. Habituellement, la clé de l’autorité de certification racine est conservée dans une machine hors ligne et n’est utilisée que lorsque tu as besoin de signer un certificat d’autorité de certification intermédiaire.

Le fichier de configuration « csr_INTERMEDIATE_CA.json » est nécessaire pour créer une AC intermédiaire.

  • csr_INTERMEDIATE_CA.json– La demande de signature de certificat pour l’AC intermédiaire
{
 "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"
 }
}

Intermédiaire CA

Le fichier « root_to_intermediate_ca.json » contient la configuration de signature de la Root CA.

{ 
"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} } } }

Configurer l'AC intermédiaire

Ce fichier contient les paramètres les plus pertinents pour un certificat.

  • usages – Quels usages sont autorisés à être effectués par le certificat en cours de signature. Les options prises en charge par CFSSL sont les suivantes :
    • « signature numérique »,
    • « cert sign »,,
    • « crl sign »,
    • « signature »
    • etc
  • is_ca – ce champ s’applique uniquement à la génération de certificats d’autorités de certification intermédiaires et permet au certificat généré de signer d’autres certificats. Si tu laisses ce champ sur un certificat d’appareil final, il sera rejeté par les navigateurs et les systèmes opérationnels les plus courants.

La commande suivante créera une AC intermédiaire avec la configuration mentionnée ci-dessus.

cfssl gencert -initca csr_INTERMEDIATE_CA.json | cfssljson -bare intermediate_ca

crée une AC intermédiaire contre la configuration mentionnée ci-dessus

La commande ci-dessus créera les fichiers suivants de l’autorité de certification intermédiaire.

  • intermediate_ca.csr – La demande de signature de certificat de l’AC intermédiaire.
  • intermediate_ca.pem – Le certificat de l’AC intermédiaire, qui n’est signé par personne et est donc inutile.
  • intermediate_ca.key – Il s’agit de la clé de l’AC intermédiaire. Garde ce fichier en sécurité.

La commande suivante montre la signature du certificat Intermediate CA par la Root CA.

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

Créer des fichiers CA intermédiaires

La commande ci-dessus signera le fichier intermediate_ca.pem. Maintenant, la configuration de l’AC racine et de l’AC intermédiaire est terminée. Il est important de conserver les clés de l’AC racine et les fichiers de configuration en toute sécurité. L’étape suivante consiste à créer un certificat pour le dispositif client ou le client. Ici, nous allons intégrer la configuration CFSSL au projet Lemur et le certificat du client sera généré.

Exécuter l’ICP de CFSSL

Pour exécuter l’ICP basée sur CFSSL, va dans le répertoire certs et exécute la commande suivante.

cfssl serve -address 192.168.10.151 -ca root_ca.pem -ca-key root_ca-key.pem -port 8888

La sortie de la commande ci-dessus sera la suivante.

[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

Run CFSSL PKI

L’adresse IP de la machine est 192.168.10.151 et le port est 8888. Autorise ce port dans le pare-feu pour utiliser la CFSSL.

REMARQUE : La commande suivante n’est qu’un guide pour utiliser l’utilitaire 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] }

Maintenant, la configuration de la CFSSL est terminée et elle fonctionne sur la machine. L’étape suivante est l’intégration de CFSSL avec Lemur.

Configuration de Lemur pour l’ICP de CFSSL

Maintenant, le fichier de configuration « lemur.conf.py » du Lemur sera modifié ( comme l’URL, le ROOT et les clés intermédiaires). Le fichier de configuration comprendra les informations sur la CFSSL. Le chemin du fichier de configuration de lemur est « /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-----"""

Configuration du lémurien

Maintenant, exécute la commande « lemur start » pour utiliser le fichier lemur.conf.py avec le paramètre CFSSL.

Créer des certificats à l’aide de CFSSL

En suivant notre article précédent sur le Lemur, accède au tableau de bord pour créer des certificats clients en utilisant l’AC racine de CFSSL. Tout d’abord, crée une nouvelle Autorité de Certification et sélectionne le plugin CFSSL comme Root CA.

1. Définis les différents paramètres de la nouvelle autorité.

Crée une nouvelle autorité

2. sélectionne le plugin CFSSL nouvellement configuré comme autorité de certification racine.

Configurer le plugin CFSSL en tant que Root CA

Après avoir configuré la nouvelle autorité de certification dans le Lemur, l’étape suivante consiste à générer un certificat en utilisant le plugin CFSSL nouvellement configuré.

Vous aimerez aussi...