[Simple Certificate Enrollment Protocol]. Implementa el servidor y el cliente del Protocolo SCEP utilizado para automatizar la emisión y gestión de certificados dentro de un entorno de infraestructura de clave pública [PKI] y está diseñado principalmente para la inscripción de certificados en dispositivos como enrutadores, conmutadores y otros dispositivos de red. Incluye las herramientas scepserver y scepclient. El proceso es el siguiente:
$ mkdir depot
$ cd depot
$ scepserver ca -init -depot depot
$ scepserver -depot depot -port 2016 -challenge=ClaveSecreta (levantar el servicio en el puerto 2016 con una contraseña para que no cualquiera pueda solicitar certificados a nuestra CA.
El servidor ahora está escuchando peticiones en: http://localhost:2016/scep y desde otra terminal o máquina de la red, podemos usar scepclient para obtener un certificado firmado. El cliente genera su propia clave privada, envia el CSR al servidor SCEP usando la contraseña acordada y descarga el certificado emitido.
$ scepclient -private-key client.key -server-url http://localhost:2016/scep -challenge ClaveSecreta -common-name "servidor-web.miempresa.local"
Si client.key no existe, scepclient genera automáticamente una llave privada RSA por defecto de 2048 bits y se conecta al servidor para obtener de forma segura el certificado de la CA emisora y verificar su identidad. Genera un CSR con el Common Name [CN] especificado, lo firma digitalmente, lo cifra utilizando criptografía de sobre digital [PKCS#7] y lo envía al servidor HTTP que valida la clave, firma el CSR y devuelve el certificado final. El cliente guarda este certificado con el nombre de archivo correspondiente usualmente client.pem o scepclient.crt.
$ scepclient -private-key mi-dispositivo.key -server-url https://pki.empresa.com/certsrv/mscep/mscep.dll -ca-fingerprint "A1:B2:C3:D4:E5:F6:...:E3:F4:55:66:77:88:99:AA:BB:CC" -challenge "TextoSecreto" -common-name "dispositivo-iot-01"