GNU/Linux >> Tutoriels Linux >  >> Linux

Intégration de CFSSL avec le Lemur Certificate Manager

Dans l'article précédent sur le gestionnaire de certificats Lemur, nous n'avons utilisé aucune autorité de certification racine tierce pour les certificats clients. Par conséquent, dans ce didacticiel, PKI sera configuré à l'aide de CFSSL (SSL de Cloudflare) et intégré au projet Lemur. Actuellement, il n'existe aucun document qui aide l'utilisateur à intégrer CFSSL avec la configuration Lemur.

Remarque :Comme nous utilisons CFSSL en tant qu'autorité racine tierce, nous devons d'abord le configurer sur une machine distincte (mais nous le configurons sur la même boîte Lemur) et après cela, modifiez le fichier de configuration lemur pour utiliser CFSSL pour le signature du certificat.

Installer CFSSL

Le SSL CloudFlare est implémenté à l'aide du langage de programmation "Go". L'installation du package "go" est donc requise sur la machine. La commande suivante installera le package requis sur la machine.

1. Installer Go 

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

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

Extrayez l'archive téléchargée et installez-la à l'emplacement souhaité sur le système. Nous l'installons sous le répertoire /usr/local. Vous pouvez également le placer sous l'emplacement souhaité sur le système.

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

Après l'installation du package Go, il est également nécessaire de définir une variable d'environnement pour le binaire Go. (Vous pouvez l'ajouter dans le profil de l'utilisateur pour en faire un paramètre permanent). Généralement, vous devez définir 3 variables d'environnement comme GOROOTGOPATH et CHEMIN .

GOROOT est l'emplacement où le package Go est installé sur votre système.

exporter GOROOT=/usr/local/go 

GOPATH est l'emplacement de votre répertoire de travail.

exporter GOPATH=$HOME/aller

Définissez maintenant le CHEMIN variable pour accéder à l'ensemble du système binaire go.

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

2. Commande Test Go

Tapez maintenant la commande "go" dans le terminal. Il affichera la sortie comme la capture d'écran suivante.

aller

3. Installer CFSSL

Nous devons installer CFSSL sur cette plate-forme Ubuntu. Lorsque les variables d'environnement requises pour GO sont correctement définies, le processus d'installation de CFSSL sera facile.

un. La commande suivante téléchargera l'utilitaire CFSSL et le compilera dans le chemin $GOPATH/bin/.

aller chercher -u github.com/cloudflare/cfssl/cmd/cfssl

b. La commande suivante installera le plugin json du package CFSSL. Il est nécessaire car CFSSL gère les requêtes JSON.

 allez chercher -u github.com/cloudflare/cfssl/cmd/cfssljson

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

aller chercher -u github.com/cloudflare/cfssl/cmd/...

Comme indiqué ci-dessous, exécutez la commande "cfssl" dans le terminal et elle affichera toutes les opérations prises en charge par la PKI CFSSL.

Configuration PKI de CFSSL

Désormais, l'application cfssl sera utilisée pour configurer la PKI pour le projet Lemur. Les fichiers de configuration "CSR_configuration" et "signing_configuration" sont importants dans la configuration CFSSL. Le fichier de configuration "CSR" contient la configuration de la paire de clés que vous êtes sur le point de créer et la configuration "Signing" comme son nom l'indique, définit les règles de configuration.

Créer une autorité de certification racine

Pour l'autorité de certification racine, vérifiez 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":"Londres", "O":"Mon organisation", "OU":"Mon unité organisationnelle dans mon organisation" } ], "ca":{ "expiry":"262800h" }}

Une brève explication des différents champs est donnée ci-dessous.

  • Le fichier de configuration suit le schéma de nommage X.509, les champs suivants sont donc obligatoires :
    • CN (nom commun) - Le nom de l'entité. Dans le cas de l'autorité de certification racine, il s'agit du nom de l'autorité de certification racine ;
    • C  (Pays)
    • L (Emplacement)
    • O (Organisation)
    • UO (unité organisationnelle)
  • Maintenant, un certain nombre de champs spécifiques sont spécifiques à 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 appareils hérités 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, il s'agit de 30 ans (24x356x30), car l'autorité racine durera aussi longtemps que vous avez prévu la sécurité de la clé racine.

Maintenant, exécutez la commande suivante pour créer réellement l'autorité de certification racine pour le Lemur.

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

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

  • root_ca.csr - La demande de signature de certificat de l'autorité de certification racine, qui n'a pas de sens pour l'autorité de certification racine et ne sera donc jamais utilisée. Comme l'autorité de certification racine est auto-signée.
  • root_ca.pem – Le certificat de l'autorité de certification racine. C'est le fichier que vous et de distribuer autant que possible.
  • root_ca.key - Il s'agit de la clé CA racine. Conservez ce fichier en toute sécurité, comme si votre vie en dépendait. Pour une autorité de certification racine publique, c'est en fait la vérité.

L'autorité de certification racine est auto-signée, passez donc à l'étape suivante pour la génération d'une autorité de certification intermédiaire.

Autorité de certification intermédiaire

La génération de CA Intermédiaire n'est pas obligatoire mais correspond à une bonne pratique. L'objectif final d'avoir une autorité de certification 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 sur une machine hors ligne et n'est utilisée que lorsque vous devez signer un certificat d'autorité de certification intermédiaire.

Le fichier de configuration "csr_INTERMEDIATE_CA.json" est requis pour créer une autorité de certification intermédiaire.

  • csr_INTERMEDIATE_CA.json – La demande de signature de certificat pour l'autorité de certification intermédiaire
{ "CN":"My-Intermediate-CA", "key":{ "algo":"ecdsa", "size":256 }, "names":[ { "C":"UK", "L":"Londres", "O":"Mon organisation", "OU":"Mon unité organisationnelle dans mon organisation" } ], "ca":{ "expiry":"42720h" }}

Le fichier "root_to_intermediate_ca.json" contient la configuration de signature de l'autorité de certification racine.

{ 
"signing":{ "default":{ "usages":["digital signature","cert sign","crl sign","signing"], "expiry":"262800h" , "ca_constraint":{"is_ca":vrai, "max_path_len":0, "max_path_len_zero":vrai} } }}

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

  • usages – Quelles utilisations sont autorisées à être effectuées par le certificat en cours de signature. Les options prises en charge par CFSSL sont les suivantes :
    • "signature numérique",
    • « signe de certificat »,
    • "signe crl",
    • "signer"
    • 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 vous laissez ce champ sur un certificat d'appareil final, il sera rejeté par la plupart des navigateurs et systèmes d'exploitation courants.

La commande suivante créera une autorité de certification intermédiaire par rapport à la configuration mentionnée ci-dessus.

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

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'autorité de certification intermédiaire.
  • intermediate_ca.pem :le certificat de l'autorité de certification intermédiaire, qui n'est signé par personne et donc inutile.
  • intermediate_ca.key :il s'agit de la clé CA intermédiaire. Conservez ce fichier en toute sécurité.

La commande suivante montre la signature du certificat de l'autorité de certification intermédiaire par l'autorité de certification racine.

cfssl signe -ca root_ca.pem -ca-key root_ca-key.pem -config root_to_intermediate_ca.json middle_ca.csr | cfssljson -bare intermediaire_ca

La commande ci-dessus signera le fichier intermediaire_ca.pem. La configuration de l'autorité de certification racine et intermédiaire est maintenant terminée. Il est important de conserver les clés de l'autorité de certification racine et les fichiers de configuration en toute sécurité. L'étape suivante consiste à créer un certificat pour l'appareil 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 la PKI de CFSSL

Pour exécuter la PKI basée sur CFSSL, allez dans le répertoire certs et exécutez 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 suivra.

[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] Initialisation du signataire
2018/05/20 16:35:19 [AVERTISSEMENT] impossible d'initialiser le signataire ocsp :ouvert :aucun fichier ou répertoire de ce type
2018/05/20 16:35:19 [INFO] le point de terminaison '/api/v1/cfssl/scaninfo' est activé
2018/05/20 16:35:19 [AVERTISSEMENT] le point de terminaison 'ocspsign' est désactivé :le signataire n'est pas initialisé
2018/05/20 16:35:19 [INFO] le point de terminaison '/' est activé
2018/05/20 16:35:19 [INFO] le point de terminaison '/api/v1/cfssl/info' est activé
2018/05/20 16:35:19 [INFO] point de terminaison '/api/v1/cfssl/gencrl' est activé
2018/05/20 16:35:19 [INFO] point de terminaison ' /api/v1/cfssl/scan' est activé
2018/05/20 16:35:19 [AVERTISSEMENT] le point de terminaison 'crl' est désactivé :cert db non configuré (manquant -db-config)
2018/05/20 16:35:19 [INFO] le point de terminaison '/api/v1/cfssl/certinfo' est activé
2018/05/20 16:35:19 [WARNING] le point de terminaison 'revoke' est désactivé :cert db pas conf igured (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' est activé
2018/05/20 16:35:19 [INFO] clé de configuration / générateur CSR
2018/05/20 16:35:19 [INFO] endpoint ' /api/v1/cfssl/newkey' est activé
2018/05/20 16:35:19 [INFO] endpoint '/api/v1/cfssl/init_ca' est activé
2018/05/20 16:35:19 [INFO] le point de terminaison '/api/v1/cfssl/sign' est activé
2018/05/20 16:35:19 [WARNING] le point de terminaison 'authsign' est désactivé :{"code":5200,"message":"Politique non valide ou inconnue"}
2018/05/20 16:35:19 [INFO] le point de terminaison '/api/v1/cfssl/newcert' est activé
2018/05 /20 16:35:19 [INFO] Configuration du gestionnaire terminée.
2018/05/20 16:35:19 [INFO] En cours d'écoute sur 192.168.10.151:8888

L'adresse IP de la machine est 192.168.10.151 et le port est 8888 . Autorisez ce port dans le pare-feu à utiliser le CFSSL.

REMARQUE :La commande suivante ne sert qu'à guider l'utilisation de l'utilitaire cfssl.

{ cfssl serve [-address address] [-ca cert] [-ca-bundle bundle] \
[-ca-key key] [-int-bundle bundle] [-int-dir dir] [ -port port] \
[-fichier de métadonnées] [-remote remote_host] [-config config] \
[-responder cert] [-responder-key clé] [-db-config db-config] }

Maintenant, la configuration de la CFSSL est terminée et elle est en cours d'exécution sur la machine. La prochaine étape est l'intégration de CFSSL avec Lemur.

Configuration Lemur pour la PKI de CFSSL

Maintenant, le fichier de configuration "lemur.conf.py" du Lemur sera modifié (comme l'URL, la racine et les clés intermédiaires). Le fichier de configuration contiendra 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
9UMEM4ED2J8 / W4WDTYABE5EZWIHAN3OW9 />-----END CERTIFICAT-----"""
CFSSL_INTERMEDIATE ="""-----DÉBUT DU CERTIFICAT-----
MIICfDCCAiKgAwIBAgIUEeb8Duel8wySG61vCM2UEUD15XQwCgYIKoZIzj0EAwIw
qM9lE82tku/b6SMxAlBByQ==
-----FIN DU CERTIFICAT----- """

Maintenant, exécutez la commande "lemur start" pour utiliser le 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édez au tableau de bord pour créer des certificats clients en utilisant Root CA de CFSSL. Tout d'abord, créez une nouvelle autorité de certification et sélectionnez le plug-in CFSSL comme autorité de certification racine.

1. définir différents paramètres de la nouvelle autorité.

2. sélectionnez le plugin CFSSL nouvellement configuré en tant qu'autorité de certification racine.

Après avoir configuré la nouvelle autorité de certification dans Lemur, la prochaine étape consiste à générer un certificat à l'aide du plug-in CFSSL nouvellement configuré.


Linux
  1. Analyser le noyau Linux avec ftrace

  2. Apprenez les raccourcis du gestionnaire de fenêtres i3 Linux

  3. Démarrer avec le Gestionnaire de fichiers Plesk

  4. Utiliser –exclude avec la commande Du ?

  5. Installer et utiliser l'utilitaire Lets Encrypt Certbot sur CentOS 7 avec Apache

Installation de Lemur Certificate Manager sur Ubuntu

La création d'Utilisateur, de Certificat et de Signature de CSR pour Lemur Certificate Manager

Premiers pas avec le gestionnaire de paquets Nix

Autorité de certification avec OpenSSL

Network Manager sur Linux avec des exemples

Manipuler des fichiers avec le gestionnaire de fichiers du panneau de contrôle de Plesk