La creación de Usuario, Certificado y Firma de CSR para Lemur Certificate Manager

La creación de Usuario, Certificado y Firma de CSR para Lemur Certificate Manager

Después de la instalación exitosa del administrador de certificados Lemur, CFSSL Root Certification Authority (CA) se integró con él. Después del paso de integración, se creó la CA local utilizando el complemento CFSSL en el lémur. Entonces, CFSSL es la CA raíz en nuestro caso. Como sabemos que el administrador de certificados de Lemur está basado en Python, en este artículo, nuestro enfoque es crear diferentes scripts de Python que serán útiles para un mayor desarrollo en el proyecto. En este artículo, realizaremos los siguientes scripts para interactuar con Lemur usando la terminal.

  • Creación de Autoridad usando CFSSL en la GUI de Lemur. Esta autoridad CFSSL se utilizará en nuestros scripts para generar el certificado. He establecido el título «myCA» de la autoridad CFSSL en la GUI. Este título «myCA» se utilizará en la generación de certificados de Lemur.

Usando el complemento CFSSL

«myCA» que se muestra en la lista después de la creación.

  • Usando el script de Python para crear un usuario con el rol de «Administrador» usando la API de Lemur y la solicitud se envía en formato JSON. (verifique el resultado de la página de usuarios de Lemur GUI).
  • Creación de Certificado para el propietario y usuario especificado (Verifique el resultado de la página de certificado de lemur GUI).
  • generación de claves privadas/públicas usando Openssl en la terminal (a continuación se proporcionan comandos para generar el par de claves y luego CSR) y
  • luego use el CSR (cat the csr file) en el script para generar el certificado de la autoridad personalizada definida.

NOTA:

Todos los scripts de Python enviarán una solicitud en formato JSON a la plataforma Lemur, así que cambie los parámetros en los scripts según sus requisitos. (como su nombre de autoridad CFSSL, nombre de usuario, etc.)

Guiones

En el siguiente script, la solicitud json se enviará a 192.168.1.7 (dirección IP de la CA raíz de Lemur y CFSSL). Después de la autenticación exitosa, se enviará otra solicitud para la creación del nuevo usuario.

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()
--------------------------------------------------------------------------------------------------

En el siguiente script, se envía una solicitud a la autoridad «myCA» para generar un nuevo certificado para el usuario «aa».

2. crear_certificado_por_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]"}],"validityStart": "2018-11-11T04:19:48.000Z","organizationalUnit": "Operations"}),headers=Auth)

print cert_req.json()
--------------------------------------------------------------------------------------------------

El propósito del siguiente script es firmar el CSR de la autoridad de certificación CFSSL. Los comandos necesarios de OpenSSL se dan arriba para generar el csr para el script.

El siguiente comando se utilizará para firmar la CSR personalizada. Esta funcionalidad no se proporciona en la GUI de Lemur para firmar la CSR utilizando nuestra CA configurada localmente.

Comando de generación de pares de claves:

openssl genrsa -out test.key 2048

Creación de CSR utilizando la clave de prueba generada anteriormente:

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

Ahora use el comando «cat» para ver el contenido de test.csr y cópielo en el script para generar el certificado en el CSR generado por el usuario. Una sugerencia importante sobre el uso de CSR en el script es eliminar /r y usar /n excepto entre las etiquetas de inicio/detención de CSR.

3. crear_certificado_usando_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()
--------------------------------------------------------------------------------------------------

Conclusión

En este artículo, se escriben diferentes secuencias de comandos de Python para interactuar con el proyecto de administrador de certificados de Lemur. Estos scripts serán útiles para que los desarrolladores los usen desde la CLI.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *