La création de l’utilisateur, du certificat et la signature du CSR pour Lemur Certificate Manager

Après l’installation réussie du gestionnaire de certificats Lemur, l’autorité de certification (CA) racineCFSSL a été intégrée à celui-ci. Après l’étape d’intégration, l’AC locale a été créée à l’aide du plugin CFSSL dans le lemur. Ainsi, CFSSL est l’AC racine dans notre cas. Comme nous savons que le gestionnaire de certificats Lemur est basé sur Python, dans cet article, nous nous concentrons sur la création de différents scripts python qui seront utiles pour le développement ultérieur du projet. Dans cet article, nous allons exécuter les scripts suivants pour interagir avec Lemur à l’aide du terminal.

  • Création d’une Autorité utilisant CFSSL dans l’interface graphique de Lemur. Cette Autorité CFSSL sera utilisée dans nos scripts pour générer le certificat. J’ai défini le titre « myCA » de l’autorité CFSSL dans l’interface graphique. Ce titre « myCA » sera utilisé pour générer les certificats à partir de Lemur.

En utilisant le plugin CFSSL

« myCA » apparaît dans la liste après la création.

  • Utilisation du script Python pour créer un utilisateur avec le rôle « Admin » en utilisant l’API de Lemur et la demande est envoyée au format JSON. (vérifie le résultat à partir de la page des utilisateurs de l’interface graphique de Lemur).
  • Création d’un certificat pour le propriétaire et l’utilisateur spécifiés (vérifie le résultat à partir de la page des certificats de l’interface graphique de Lemur).
  • Génération de clés privées/publiques à l’aide d’Openssl dans le terminal (les commandes sont données ci-dessous pour générer la paire de clés puis le CSR) et
  • puis utilise le CSR (cat le fichier csr) dans le script pour générer le certificat à partir de l’autorité personnalisée définie.

REMARQUE :

Tous les scripts python enverront une requête au format JSON à la plateforme Lemur, alors modifie les paramètres dans les scripts en fonction de tes besoins. (comme ton nom d’autorité CFSSL, ton nom d’utilisateur, etc ).

Scripts

Dans le script suivant, la requête json sera envoyée à 192.168.1.7 (adresse IP du Lemur et de l’autorité de certification racine CFSSL). Après l’authentification réussie, une autre demande sera envoyée pour la création du nouvel utilisateur.

1. create_user_using_admin_role.py

#!/usr/bin/python
import json import requests
login = requests.request("POST","http://192.168.1.7/api/1/auth/login",data=json.dumps({'username': "lemur", 'password': "lemur"}),headers={'content-type': 'application/json'}) print login.json() Auth = {'Authorization': 'token %s' %login.json()["token"], 'content-type': 'application/json'}
test = requests.request("POST","http://192.168.1.7/api/1/users",data=json.dumps({'username': "aa", 'aaa': "aaa" ,"email":"[email protected]","active": "true", "roles": [{'id':1}or{'name': 'myRole'}]}),headers=Auth)
print test.json()
--------------------------------------------------------------------------------------------------

Dans le script suivant, une demande est envoyée à l’autorité « myCA » pour générer un nouveau certificat pour l’utilisateur « aa ».

2. create_certifacte_by_lemur.py

#!/usr/bin/python
import json
import requests
##username/password to login lemur to perform the desired action
login = requests.request("POST","http://192.168.1.7/api/1/auth/login",data=json.dumps({'username': "lemur", 'password': "lemur"}),headers={'content-type': 'application/json'})
print login.json() Auth = {'Authorization': 'token %s' %login.json()["token"], 'content-type': 'application/json'} cert_req = requests.request("POST","http://192.168.1.7/api/1/certificates",data=json.dumps({"owner": "[email protected]","commonName": "aa.example.net","country": "AU","replacements": [{"id": 1 }],"notify": "true","validityEnd": "2026-01-01T08:00:00.000Z", "authority": {"name": "myCA" }, "organization": "test.", "location": "Los Gataaos", "state": "Caldifornia", "user": { "username": "aa","active": "true","email": "[email protected]"}, "roles": [{"id": 1, "description": "admin role", "name": "[email protected]le.net"}],"validityStart": "2018-11-11T04:19:48.000Z","organizationalUnit": "Operations"}),headers=Auth)
print cert_req.json() --------------------------------------------------------------------------------------------------

L’objectif du script suivant est de signer le CSR de l’autorité de certification CFSSL. Les commandes nécessaires d’OpenSSL sont données ci-dessus pour générer le csr pour le script.

La commande suivante sera utilisée pour signer la CSR personnalisée. Cette fonctionnalité n’est pas fournie dans l’interface graphique de Lemur pour signer la CSR à l’aide de notre autorité de certification configurée localement.

Commande de génération de la paire de clés :

openssl genrsa -out test.key 2048

Création du CSR en utilisant le test.key généré ci-dessus :

openssl req -new -sha256 -key test.key -out test.csr

Utilise maintenant la commande « cat » pour afficher le contenu de test.csr et copie-le dans le script pour générer le certificat sur la CSR générée par l’utilisateur. Un conseil important concernant l’utilisation du CSR dans le script est de supprimer /r et d’utiliser /n sauf entre les balises start/stop du CSR.

3. create_certificate_using_local_csr.py

#!/usr/bin/python
import json
import requests
##change username/password here
login = requests.request("POST","http://192.168.1.7/api/1/auth/login",data=json.dumps({'username': "lemur", 'password': "lemur"}),headers={'content-type': 'application/json'})
print login.json()
Auth = {'Authorization': 'token %s' %login.json()["token"], 'content-type': 'application/json'}
#it is working
csr_req = requests.request("POST","http://192.168.1.7/api/1/certificates",data=json.dumps({"owner": "[email protected]","commonName": "aa.eaaxample.net","authority": {"name": "myCA" },"csr":"-----BEGIN CERTIFICATE REQUEST-----
\nMIICxzCCAa8CAQAwgYExCzAJBgNVBAYTAkFVMQ0wCwYDVQQIDARQQUtJMRIwEAYD\nVQQHDAlJU0xBTUFCQUQxDTALBgNVBAoMBElJSUkxDDAKBgNVBAsMA0dHRzEQMA4G\nA1UEAwwHdXNlcjEyMzEgMB4GCSqGSIb3DQEJARYRdXNlcjEyM0BnbWFpbC5jb20w\nggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDzzV4H1epwXODPs9AkioTv\nQLRtea12vCbZJhKkH59hWhDMjqNRkh8qc4R9gk83lingdWK+L35OkGNi6DG9zseh\ncVRf68sNpTeFg+eXGRmEdTallBqPd5NS3JlMmXxbLEWrELiw4gPp3JpNAzoYZUxb\n4Uk4ho9EN8Fd1/lGmubvyvkYJ1mbpsK1LfaFohGYu+7nMvU4tn1Av/zyTGcIikVu\nU4UA23jKAMzjlSKdTJH/nmqvMi2wltRtb7DNpI/5HAancrnyEzeXC5IN+sPV/5oh\nxdxCyAkp1kDrWhC2yvoffzipoqEFESWmfFrJ8riTiQZqOIWqW+ZasZtu4GDqm4CL\nAgMBAAGgADANBgkqhkiG9w0BAQsFAAOCAQEAH/PKs5kTmMPRW2Icy4Yj7vdzjpaA\n/r1glm0voMR5ytPo0+lXHDTQwt/1ObQvr8FnT2z8iqRvfXiv6WWruLzwEEVWsCFL\ny7RAa+K0wqP23CfxzCy/S4ZwCcR+wQb3UnWui8eMxgU1IBjupCR9kPFhL//aA+lm\njBi5YruBgX7MdlW+AlkuVDljzXm1orFYZFzS7OlybH5jh/B3Z2ygbC++Y24XI3qm\n5IYpsxFbOmrj7y3IXN/990305blCcKhpaG+FMTKhNqkXMYKYsZseIO3xdO4Ufjl/\nqS2jjsE1sFxmKbabhguhTT06oGimT+TbgoYVkc0DWhIdLcrOdxhGsFwdqg==\n-----END CERTIFICATE REQUEST-----"}),headers=Auth)
print csr_req.json()
--------------------------------------------------------------------------------------------------

Conclusion

Dans cet article, différents scripts python sont écrits pour interagir avec le projet de gestionnaire de certificats Lemur. Ces scripts seront utiles aux développeurs pour l’utiliser à partir de la CLI.

Vous aimerez aussi...