Integración de CFSSL con Lemur Certificate Manager

Instalar Ir

En el artículo anterior sobre el administrador de certificados de Lemur, no hemos utilizado ninguna autoridad de certificación (CA) raíz de terceros para los certificados de cliente. Por lo tanto, en este tutorial, PKI se configurará mediante CFSSL (SSL de Cloudflare) y se integrará con el proyecto Lemur. Actualmente, no existe ningún documento que ayude al usuario a integrar CFSSL con la configuración de Lemur.

Nota: Como estamos usando CFSSL como una autoridad raíz de terceros, primero tenemos que configurarlo en una máquina separada (sin embargo, lo configuramos en el mismo cuadro Lemur) y luego cambie el archivo lemur conf para usar CFSSL para el firmando el certificado.

Instalación de CFSSL

CloudFlare SSL se implementa utilizando el lenguaje de programación «Go», por lo que se requiere la instalación del paquete «go» en la máquina. El siguiente comando instalará el paquete requerido en la máquina.

1. Instalar Ir

El paquete Go se instalará desde el código fuente.

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

Instalar Ir

Extraiga el archivo descargado e instálelo en la ubicación deseada del sistema. Lo estamos instalando en el directorio /usr/local. También puede poner esto en la ubicación deseada en el sistema.

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

Descomprima los archivos fuente de go

Después de la instalación del paquete Go, también es necesario configurar una variable de entorno para el binario Go. (Puede agregarlo en el perfil de usuario para que sea una configuración permanente). Comúnmente necesita establecer 3 variables de entorno como GOROOT, GOPATH y SENDERO.

GOROOT es la ubicación donde está instalado el paquete Go en su sistema.

export GOROOT=/usr/local/go

GOPATH es la ubicación de su directorio de trabajo.

export GOPATH=$HOME/go

Ahora configura el SENDERO variable para acceder a go binario en todo el sistema.

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

Configurar el entorno de compilación de Go

2. Comando Probar Ir

Ahora escriba el comando «ir» en la terminal. Mostrará la salida como la siguiente captura de pantalla.

go

Probar el comando Ir

3. Instalar CFSSL

Tenemos que instalar CFSSL en esta plataforma Ubuntu. Cuando las variables de entorno requeridas para GO se configuran correctamente, el proceso de instalación de CFSSL será fácil.

una. El siguiente comando descargará la utilidad CFSSL y la compilará en la ruta $GOPATH/bin/.

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

b. El siguiente comando instalará el complemento json del paquete CFSSL. Es necesario porque CFSSL maneja las solicitudes JSON.

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

C. simplemente instale todos los programas de CFSSL usando el siguiente comando. Este comando descargará, compilará e instalará todos los programas de utilidad (incluidos cfssl, cfssljson y mkbundle, entre otros) en el directorio $GOPATH/bin/.

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

Instalar CFSSL

Como se muestra a continuación, ejecute el comando «cfssl» en la terminal y mostrará todas las operaciones compatibles con CFSSL PKI.

Ejecute el comando cfssl

Configuración de PKI de CFSSL

Ahora, la aplicación cfssl se usará para configurar PKI para el proyecto Lemur. Los archivos de configuración «CSR_configuration» y «signing_configuration» son importantes en la configuración de CFSSL. El archivo de configuración «CSR» contiene la configuración para el par de claves que está a punto de crear y la configuración de «Firma», como dice el nombre, establece las reglas de configuración.

Crear CA RAÍZ

Para la CA raíz, verifique el siguiente archivo de configuración de CSR (que llamaremos 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"
 }
}

Configuración de PKI de CFSSLAnuncio publicitario

A continuación se da una breve explicación de los diferentes campos.

  • El archivo de configuración sigue el esquema de nombres X.509, por lo que se requieren los siguientes campos:
    • CN (Nombre Común) – El nombre de la entidad. En el caso de la CA raíz, es el nombre de la CA raíz;
    • C (País)
    • L (Ubicación)
    • O (Organización)
    • OU (Unidad organizativa)
  • Ahora, una serie de campos específicos son específicos de CFSSL:
    • KEY – Define las características de las llaves:
      • Algo: especifica el algoritmo. Puede ser ‘rsa’ o ‘ecdsa’, para algoritmos RSA o ECDSA, respectivamente. Ahora, ECDSA siempre se recomienda si los dispositivos heredados no son relevantes, pero esto solo se aplica a los dispositivos de menos de dos o tres años. RSA se utilizará de otra manera.
      • tamaño: especifica el tamaño de la clave. 256 se utilizará para la clave ecdsa. Para claves RSA, 2048 o 4096 son los valores recomendados.
    • ca – Define las características de la CA y en este caso la vigencia de la clave, en horas, sí, en horas. En este caso son 30 años (24x356x30), ya que la autoridad de root durará tanto como haya previsto la seguridad de la clave de root.

Ahora, ejecute el siguiente comando para crear la CA raíz para Lemur.

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

crear la raíz CA para el lémur

El comando anterior creará los siguientes archivos en la máquina.

  • root_ca.csr: la solicitud de firma del certificado raíz ca, que no tiene sentido para la raíz ca y, por lo tanto, nunca se utilizará. Como la CA raíz está autofirmada.
  • root_ca.pem: el certificado de CA raíz. Este es el archivo que usted y distribuir tanto como sea posible.
  • root_ca.key: esta es la clave CA raíz. Mantenga este archivo seguro y protegido, como si su vida dependiera de ello. Para una CA raíz pública, esto es realmente la verdad.

La CA raíz está autofirmada, así que continúe con el siguiente paso para la generación de una CA intermedia.

CA intermedia

La generación de CA Intermedia no es obligatoria pero corresponde a una buena práctica. El objetivo final de tener una CA intermedia es tener un paso intermedio en términos de seguridad. Normalmente. la clave de CA raíz se guarda en una máquina fuera de línea y solo se usa cuando necesita firmar un certificado de CA intermedio.

Se requiere el archivo de configuración «csr_INTERMEDIATE_CA.json» para crear una CA intermedia.

  • csr_INTERMEDIATE_CA.json: la solicitud de firma de certificado para 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"
 }
}

CA intermedia

El archivo «root_to_intermediate_ca.json» contiene la configuración de firma de la CA raíz.

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

Configurar CA intermediaAnuncio publicitario

Este archivo contiene los parámetros más relevantes para un certificado.

  • usos: qué usos puede realizar el certificado que se firma. Las opciones soportadas por CFSSL son las siguientes:
    • «firma digital»,
    • «signo de certificado»,
    • “signo crl”,
    • «firma»
    • etc.
  • is_ca: este campo solo es aplicable para generar certificados de CA intermedias y permite que el certificado generado firme otros certificados. Si deja este campo en un certificado de dispositivo final, será rechazado por los navegadores y sistemas operativos más comunes.

El siguiente comando creará una CA intermedia contra la configuración mencionada anteriormente.

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

crear una CA intermedia contra la configuración mencionada anteriormente

El comando anterior creará los siguientes archivos de la CA intermedia.

  • intermedia_ca.csr: la solicitud de firma del certificado de CA intermedia.
  • intermedia_ca.pem: el certificado de CA intermedia, no firmado por nadie y, por lo tanto, inútil.
  • intermedia_ca.key: esta es la clave de CA intermedia. Mantenga este archivo seguro y protegido.

El siguiente comando muestra la firma del certificado de CA intermedia por parte de la CA raíz.

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

Crear archivos CA intermedios

El comando anterior firmará el archivo intermedio_ca.pem. Ahora la configuración de la CA raíz e intermedia está completa. Es importante mantener seguros los archivos de configuración y las claves de CA raíz. El siguiente paso es crear un certificado para el dispositivo cliente o el cliente. Aquí, integraremos la configuración de CFSSL con el proyecto Lemur y se generará el certificado del cliente.

Ejecute la PKI de CFSSL

Para ejecutar la PKI basada en CFSSL, ingrese al directorio de certificados y ejecute el siguiente comando.

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

La salida del comando anterior será la siguiente.

[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

Ejecutar CFSSL PKI

La dirección IP de la máquina es 192.168.10.151 y el puerto es 8888. Permita que este puerto en el firewall use el CFSSL.

NOTA: El siguiente comando es solo una guía para usar la utilidad 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] }

Ahora, la configuración de CFSSL está completa y se está ejecutando en la máquina. El siguiente paso es la integración de CFSSL con Lemur.

Configuración de Lemur para la PKI de CFSSL

Ahora, se modificará el archivo de configuración «lemur.conf.py» de Lemur (como la URL, la RAÍZ y las claves intermedias). El archivo de configuración incluirá la información sobre el CFSSL. La ruta del archivo de configuración de lemur es «/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-----"""

Configuración de lémur

Ahora, ejecute el comando «lemur start» para usar lemur.conf.py con la configuración CFSSL.

Crear certificados usando CFSSL

Siguiendo nuestro artículo anterior sobre Lemur, acceda al tablero para crear Certificados de cliente utilizando la CA raíz de CFSSL. En primer lugar, cree una nueva Autoridad de Certificación y seleccione el complemento CFSSL como Root CA.

1. establecer diferentes parámetros de la nueva autoridad.

Crear nueva autoridad

2. Seleccione el complemento CFSSL recién configurado como CA raíz.

configurar el complemento CFSSL como una CA raíz

Después de configurar la nueva Autoridad de Certificación en Lemur, el siguiente paso es generar un certificado utilizando el complemento CFSSL recién configurado.

Deja una respuesta

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