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 *