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 de Lemur) y luego cambie el archivo conf de lemur para usar CFSSL para el firmando el certificado.
Instalando 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
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
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). Por lo general, debe establecer 3 variables de entorno como GOROOT , GOPATH y RUTA .
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 la RUTA variable para acceder a go binario en todo el sistema.
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
2. Comando Probar Ir
Ahora escriba el comando "ir" en la terminal. Mostrará el resultado como la siguiente captura de pantalla.
go
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/...
Como se muestra a continuación, ejecute el comando "cfssl" en la terminal y mostrará todas las operaciones compatibles con CFSSL PKI.
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 "Firma", como dice el nombre, establece las reglas de configuración.
Crear CA RAÍZ
Para la CA raíz, consulte el siguiente archivo de configuración de CSR (que llamaremos csr_ROOT_CA.json):
- 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" } }
A continuación se proporciona 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 claves:
- 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. De lo contrario, se utilizará RSA.
- 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 validez de la clave, en horas, sí, en horas. En este caso, son 30 años (24x356x30), ya que la autoridad raíz durará tanto como haya previsto la seguridad de la clave raíz.
- KEY:define las características de las claves:
Ahora, ejecute el siguiente comando para crear la CA raíz para Lemur.
cfssl gencert -initca csr_ROOT_CA.json | cfssljson -bare root_ca
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 raíz de CA. Mantenga este archivo seguro y protegido, como si su vida dependiera de ello. Para una CA raíz pública, esta 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. Usualmente. 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" } }
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} } } }
Este archivo contiene los parámetros más relevantes para un certificado.
- usos:qué usos puede realizar el certificado que se firma. Las opciones admitidas por CFSSL son las siguientes:
- “firma digital”,
- “signo de certificado”,
- “signo crl”,
- “firma”
- etc
- is_ca:este campo solo se aplica 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
El comando anterior creará los siguientes archivos de la CA intermedia.
- intermediate_ca.csr:la solicitud de firma del certificado de CA intermedia.
- intermediate_ca.pem:el certificado de CA intermedia, no firmado por nadie y, por lo tanto, inútil.
- intermediate_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
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.
Ejecutar 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
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 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-----"""
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.
2. seleccione el complemento CFSSL recién configurado como 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.