SCEP

Esta página describe la compatibilidad de EJBCA con el protocolo SCEP. Para obtener guías sobre cómo usar SCEP con EJBCA, consulte la Guía de operaciones de SCEP .

SCEP es un protocolo comúnmente utilizado por equipos de red para la inscripción de certificados. También lo utilizan las soluciones MdM y EMM para inscribir certificados en nombre de dispositivos como móviles. SCEP se especifica en el borrador del Protocolo Simple de Inscripción de Certificados del IETF (draft-nourse-scep-23) .

En general, el SCEP ha sido reemplazado por el protocolo similar EST , que recomendamos como alternativa.

Existen algunos problemas de compatibilidad con SCEP, uno de ellos es si el certificado de CA debe devolverse en una respuesta de inscripción de SCEP. El certificado de CA es opcional (y configurable en EJBCA), y algunos clientes, como el cliente VPN de Cisco, lo requieren, mientras que otros, como el de Juniper, lo prohíben.

Operaciones apoyadas

EJBCA implementa características a partir (al menos) del borrador 23 de la especificación SCEP. Se implementan los siguientes mensajes SCEP:

  • PKCSReq incluida la renovación del certificado de cliente

  • Obtener CRL

  • Obtener certificado CA

  • Obtener cadena de certificados CA

  • Obtener CACaps

  • Obtener el siguiente certificado CA

  • Obtener certificado inicial

Se admiten las siguientes capacidades de CA:

  • Operación POSTPKIO

  • SHA-512

  • SHA-256

  • SHA-1

  • DES3

  • Renovación del certificado de cliente (solo edición Enterprise)

Tenga en cuenta que EJBCA devuelve mensajes de error SCEP adecuados para la mayoría de las fallas, pero no en todos los casos de falla.

Modos operativos

SCEP puede ejecutarse en modo CA o modo RA . En modo CA, EJBCA actúa como una CA básica, asumiendo que las funciones de RA (es decir, la inscripción) las gestiona un administrador directamente en la interfaz de RA o un tercero que actúa como RA. En modo RA, EJBCA interactúa directamente con el cliente, inscribiendo la entidad final y emitiendo el certificado automáticamente.

Modo CA

En el modo CA, EJBCA recibe solicitudes PKCSReq de SCEP y devuelve el certificado/CRL inmediatamente en un mensaje de respuesta SCEP. El cliente SCEP envía mensajes directamente a la CA, cifrados con el certificado de la CA, y esta autentica/autoriza la solicitud basándose en el nombre de usuario y el código de registro de una entidad final precreada en EJBCA. Este modo no admite el modelo de sondeo; EJBCA utiliza el método directo de la CA, donde la solicitud se concede o deniega inmediatamente.

imágenes/descargar/archivos adjuntos/143736177/Captura_de_pantalla_2018-08-02_a_08.59.47.png

  • La parte CN del DN en la solicitud PKCS#10, que forma parte de la solicitud SCEP, se usará como nombre de usuario al autenticar la solicitud en EJBCA. Cree la solicitud SCEP con un CN que coincida con el nombre de usuario registrado en EJBCA.

  • La contraseña de desafío de la solicitud PKCS#10, que forma parte de la solicitud SCEP, se usará como contraseña al autenticar la solicitud en EJBCA. Cree la solicitud SCEP con una contraseña de desafío que coincida con la contraseña registrada en EJBCA.

La CA utilizada se especifica mediante el mensaje o mediante la propiedad scep.defaultca si no se envía ningún mensaje.

Valores de configuración

Nombre del valor

Descripción

Incluir certificado de CA en la respuesta

Si establece este valor como verdadero, el certificado de CA se incluirá en la respuesta, si corresponde.

Permitir la renovación del certificado del cliente

EMPRESA Esta es una característica de EJBCA Enterprise.

Esta configuración activa la Renovación de certificado de cliente, como se define en el Protocolo de inscripción de certificados simples de IETF - Apéndice D.

Este modo permite al servidor interpretar las solicitudes de inscripción como solicitudes de renovación de certificado, solo si el último certificado emitido para la entidad final ha superado la mitad de su validez. Para ser válido, el PKCS#7 que envuelve la CSR debe estar firmado con el par de claves del certificado anterior.

Permitir la renovación del certificado de cliente utilizando una clave antigua

EMPRESA Esta es una característica de EJBCA Enterprise.

El borrador de SCEP no establece si las claves antiguas se pueden reutilizar o no para la renovación del certificado de cliente, por lo que EJBCA incluye esto como una configuración.

Renovación de certificado de CA

EJBCA permite crear un certificado de renovación para una CA y emitir certificados mediante SCEP con este nuevo certificado de CA. Esto resulta útil al cambiar la clave de la CA durante la renovación. Para obtener más información, consulte el Apéndice E del Protocolo de Inscripción de Certificados Simples (IETF).

Ejemplo de flujo de trabajo

A continuación se ilustra un flujo de trabajo para ejecutar el modo CA con o sin renovación.

imágenes/en línea/3419fb0bb053a0805057333a1d925d86ab6af7599734e51ad7b8d1418a8a267c.png

Modo RA

EMPRESA Esta es una característica de EJBCA Enterprise.

En el modo RA , EJBCA recibe solicitudes PKCSReq de SCEP al crear (o editar) un usuario. Se devuelve un certificado inmediatamente en un mensaje de respuesta SCEP adecuado. La RA se autentica/autoriza según la configuración.

imágenes/descargar/archivos adjuntos/143736177/Captura_de_pantalla_2018-08-02_a_09.04.33.png

El modo RA requiere que el modo operativo esté configurado en RA. Para especificarlo, utilice la línea de comandos para configurar la propiedad <alias>.operationmode o utilice la interfaz de CA y vaya a Funciones del sistema → Configuración de SCEP y seleccione RA como modo operativo . Todos los parámetros necesarios para crear la nueva entidad final deben configurarse mediante la línea de comandos o la interfaz de CA.

Valores de configuración

Nombre del valor

Descripción

Incluir certificado de CA en la respuesta

Si establece este valor como verdadero, el certificado de CA se incluirá en la respuesta, si corresponde.

Devolver la cadena completa en las respuestas de GetCACert

Al establecer este valor, EJBCA responderá a las solicitudes GetCACert con un mensaje CMS SignedData degenerado, exclusivo para certificados, cuando la CA sea una CA intermedia (como se especifica en la sección 4.2.1.2 de RFC8894 ). Si la CA es una CA raíz, o si no se selecciona este valor, la respuesta será un único certificado X509.

La opción " Devolver cadena completa en las respuestas GetCACert" solo la pueden usar clientes compatibles con RFC8894 . Esto no aplica a los casos en que la CA es la CA raíz.

Perfil de entidad final de RA

El perfil de entidad final que se utiliza al emitir certificados.

Perfil del certificado RA

El perfil de certificado que se utiliza al emitir certificados.

Nombre de RA CA

La CA que se usará al firmar certificados. También especifica la CA predeterminada que se usará cuando no se proporcione ningún mensaje para las operaciones GetCACert , GetCACertChain , GetNextCACert y GetCACaps .

Contraseña de autenticación de RA

Un secreto compartido utilizado para autenticar al cliente SCEP ante la RA.

Esquema de generación de nombres de RA

Especifica cómo se debe generar el nombre de la entidad final.

Parámetros de generación de nombres de RA

Prefijo de generación de nombres RA

Especifica un prefijo para agregar al nombre de las entidades finales.

Sufijo de generación de nombres RA

Especifica un sufijo para agregar al nombre de las entidades finales.

La opción "Devolver la cadena completa" en las respuestas de GetCACert solo la pueden usar los clientes compatibles con RFC8894. (Esto no aplica a los casos donde la CA es la CA raíz).

Soporte de Microsoft Intune

EMPRESA Esta es una característica de EJBCA Enterprise.

EJBCA se puede usar para emitir certificados a Microsoft Intune, lo cual se realiza a través de SCEP en modo RA. Consulte la Guía de operaciones de SCEP para obtener más información sobre cómo configurar el alias y nuestra Guía de configuración de Intune para configurar Microsoft Intune con EJBCA.

Uso de SCEP con aprobaciones

EMPRESA Esta es una característica de EJBCA Enterprise.

EJBCA admite el uso de SCEP con aprobaciones solo en modo RA, ya que las aprobaciones de EJBCA se ejecutan durante la inscripción (creación de la entidad final) y no durante la emisión (emisión del certificado). Para habilitar las aprobaciones mediante SCEP, simplemente configure las aprobaciones para que se usen en la CA o el perfil de certificado como de costumbre; estas también se activarán para las solicitudes de inscripción de SCEP.

CA ↔ Flujo de trabajo del cliente

De acuerdo con el borrador-nourse-scep-23 , el flujo de trabajo al utilizar aprobaciones es el siguiente:

imágenes/en línea/7811e69a62e3ff287b094d7aada9cccd6733d22a190ced9ce1563a0428bb1af5.png

Si la inscripción es exitosa pero la emisión falla (por ejemplo, si la clave no cumple con los requisitos del perfil del certificado), el cliente simplemente necesita enviar un PKCSREQ nuevamente sin necesidad de pasar nuevamente por el proceso de aprobaciones.

Flujo de trabajo interno

Los siguientes gráficos documentan el flujo de trabajo interno de EJBCA al procesar solicitudes SCEP. Cabe destacar que el envío de un mensaje PKCSREQ a una entidad final existente con un certificado emitido generará una solicitud de renovación.

PKCSREQ

Tenga en cuenta que el siguiente gráfico PKCSREQ no ilustra todos los estados de falla.

imágenes/en línea/3dfc09afaa747c1c600498512ee1b40b278b7a1f6a65b59a5c720b5332e06f4e.png

Obtener certificado inicial

GetCertInital, como se mencionó anteriormente, es el mensaje de sondeo utilizado para verificar si una solicitud ha recibido aprobación.

Tenga en cuenta que el siguiente gráfico GetCertInital no ilustra todos los estados de error.

imágenes/en línea/76cde5e0a83ef9ba9c5f36bea48efcee6baabf3d6d8a439be054c4e449015c8d.png

Representación de SCEP a través de una RA

Representación de SCEP a través de una RA EJBCA usando pares

<p Al igual que todos los demás protocolos de EJBCA, las solicitudes SCEP pueden enviarse por proxy a EJBCA mediante TLS a través de otra instancia de EJBCA que actúe como RA en una DMZ. Para obtener más información sobre cómo configurar esto, consulte la página "Operaciones de sistemas pares" .

imágenes/en línea/7a38e5df190b3ec97a6228bd27eb9a3834d1c875affb538ad315d6e27143bbc5.png

Servidor SCEP RA externo heredado

EMPRESA Esta es una característica de EJBCA Enterprise.


La funcionalidad del servidor SCEP de RA externo está obsoleta y no se admitirá en el futuro. En su lugar, recomendamos enviar solicitudes SCEP de forma síncrona a través de una RA mediante Peers .

EJBCA admite el modelo de sondeo de RA de SCEP mediante la API de RA externa . Con esto, un cliente SCEP puede enviar una solicitud a la RA externa y esperar, sondeándola para obtener actualizaciones. Cuando la CA procesa la solicitud, que obtiene la solicitud pkcs10 de la RA externa, el certificado se devuelve a esta. Una vez completado el certificado en la RA externa, esta envía la respuesta del certificado SCEP la próxima vez que el cliente SCEP la sondea. Esta función es muy útil para aislar de forma segura a la CA de los clientes SCEP en toda la red.

Interoperabilidad / Bibliotecas y dispositivos probados

A continuación se proporciona información sobre los dispositivos probados.

Cisco ISE

EJBCA SCEP, que utiliza el modo RA, se ha integrado correctamente con Cisco ISE. Al configurar EJBCA como CA backend en Cisco ISE, se pueden inscribir dispositivos con certificados de EJBCA a través de las interfaces de inscripción de ISE. Para obtener más información, consulte EJBCA y Cisco ISE .

Cisco IOS

EJBCA SCEP, que utiliza el modo CA, se ha integrado correctamente con Cisco IOS. Al configurar EJBCA como CA para Cisco IOS, los dispositivos pueden inscribir certificados de EJBCA. Para obtener más información, consulte EJBCA y Cisco IOS .

OpenSCEP

Tenga en cuenta que OpenSCEP solo es compatible con OpenSSL 0.9.6. Además, existe una limitación conocida que provoca un bloqueo al recibir respuestas SCEP.

Para utilizar el cliente OpenSCEP[Enlace externo] para solicitar un certificado de este servlet, utilice el comando:

$ scep -k test .key -r test .pemreq -c ejbca-ca.pem -q foo123 -u http: //localhost :8080 /ejbca/publicweb/apply/scep/ALIAS/pkiclient .exe

Donde test.key se genera con:

$ openssl genrsa -out test .key

test.req se genera con:

$ openssl req -key test .key -new -days 30 -out test .req -outform DER -config .. /openssl/openscep .cnf

y test.pemreq se genera con:

$ openssl req -key test .key -new -days 30 -out test .pemreq -outform PEM -config .. /openssl/openscep .cnf

Cliente Scep simple (sscep)

Cliente Scep simple [Enlace externo] . Solo debe usar CN en el DN del usuario (igual que para PIX a continuación).

jSCEP

jSCEP[Enlace externo] utiliza EJBCA como uno de los servidores con los que se prueba.

Existe una CLI para jSCEP [Enlace externo] de Bruno Bonfils. Tenga en cuenta que jSCEP y la CLI de jSCEP requieren una versión reciente de Git (jscep-cli 1.2 o posterior) para funcionar correctamente en Java 11; de lo contrario, Java 8 debe estar en el lado del cliente al usar el siguiente comando.

Pruebe la CLI creando un alias SCEP y emitiendo una solicitud SCEP, por ejemplo:

$ cd ejbca
$ cat > scepalias-camode.properties
scep.operationmode = ca
uploaded.includeca = true
$ bin /ejbca .sh config scep uploadfile -- alias scep -- file scepalias-camode.properties
$ bin /ejbca .sh ra addendentity --username=user --password=foo123 --dn= "CN=User Usersson" --caname=ManagementCA -- type =1 --token=USERGENERATED
$ cd .. /jscep-cli-jdk6
$ openssl genrsa -out test .key
$ openssl req -key test .key -new -days 30 -out test .pemreq -outform PEM
$ java -jar target /jscepcli-1 .2-SNAPSHOT-exe.jar --ca-identifier ManagementCA --challenge foo123 --csr- file test .pemreq --dn "CN=user" --key- file test .key --url http: //localhost :8080 /ejbca/publicweb/apply/scep/pkiclient .exe

A continuación se muestra un ejemplo de alias SCEP, utilizando el nombre de alias predeterminado scep, para trabajar con la URL anterior:

imágenes/descargar/thumbnails/143736177/scep-alias.png

Si utiliza otro nombre de alias de SCEP, por ejemplo myalias , la URL de SCEP sería http://localhost:8080/ejbca/publicweb/apply/scep/myalias/pkiclient.exe.

MobileIron

Se ha confirmado que EJBCA funciona con el sistema MobileIron MDM.

Mobile Iron siempre utiliza el identificador de CA "MobileIronSCEP" en todas las solicitudes SCEP. Las solicitudes SCEP de MobileIron siempre comienzan con "operation=GetCACaps&message=MobileIronSCEP". Por lo tanto, el nombre de la CA debe ser "MobilIronSCEP" para que funcione. Al configurarlo, los modos RA y CA funcionan con MobilIronMDM.

Juniper Networks NetScreen-25/NetScreen-50

Para registrarse con Juniper Box, acceda a la interfaz web en https://<juniper-ip>/ y luego haga clic en Objetos > Certificados . Para crear una nueva solicitud de certificado:

  1. Nuevo - ingrese el DN que recibirá su casilla:

    • Nombre=netscreen.foo.se

    • Organización=PrimeKey

    • País=SE

    • Dirección IP=192.168.1.1

    • FQSN=netscreen.foo.se

    Haga clic en generar .

  2. Inscribirse automáticamente en > Configuración del nuevo servidor de CA. Debe configurar si EJBCA debe usar el modo de CA directo o el modo de sondeo de RA:

    • URL CGI: http://<ra-ip>:8080/scepraserver/scep/<config-alias>/pkiclient.exe

    • CA IDENT: El nombre de la CA en EJBCA, por ejemplo ScepCA.

    • Desafío: Una contraseña para un usuario previamente registrado en modo CA, o una contraseña aleatoria utilizada para sondear en modo RA.

    Haga clic en Aceptar .

  3. Ahora puede ver la solicitud en Objetos > Certificados . Si utiliza el modo de sondeo de RA, puede hacer clic en "Recuperar" después de que la solicitud se haya aprobado en la CA y se haya generado el certificado.

Criptografía

Al usar Cryptlib[Enlace externo] , el certificado de la CA debe tener la opción KeyUsage 'Cifrado de clave', además de los indicadores habituales de uso de clave. Esto es razonable, ya que SCEP requiere que la CA encripte los datos (lo cual generalmente es perjudicial, ya que se debe usar un certificado de cifrado especial para ello).

El uso de claves para una ScepCA debe ser: Firma de certificado, Firma de CRL, Firma digital, Cifrado de claves

Utilice la ruta completa para el cliente VPN de Cisco a continuación como nombre de servidor.

Cliente VPN de Cisco

Para inscribirse utilizando el cliente VPN de Cisco, utilice:

  • URL de CA = 'http://127.0.0.1:8080/ejbca/publicweb/apply/scep/ALIAS/pkiclient.exe'

  • Dominio CA=el nombre de su CA en EJBCA

  • En la pantalla DN, simplemente ingrese el nombre de usuario (tal como se agregó en EJBCA) como 'Nombre \[CN\]'

Al usar una RA externa para registrarse en el cliente VPN de Cisco, el certificado de la RA debe tener KeyUsage SigitalSignature y KeyEncipherment para que el cliente acepte los certificados de CA. Sin embargo, para localizar el certificado de cifrado de la RA, solo se puede configurar KeyEncipherment, lo que complica bastante las cosas.

La conclusión es que la inscripción de RA no funciona con el cliente VPN de Cisco.

AutoScep

EJBCA se ha probado con éxito con AutoSscep para la inscripción en la CA y el servicio SCEP de RA externa.

Instrucciones:

  1. Descargue y compile AutoSscep (make).

  2. Cree un archivo de configuración, ejbca.conf, como se muestra en el siguiente ejemplo.

  3. Cree un usuario en EJBCA con el nombre de usuario (nombre común) y DN exactamente como se ingresó en el archivo de configuración.

  4. Ejecute 'autosscep ejbca.conf'.

Archivo de configuración de muestra, ejbca.conf:

Verbose = "yes"
Debug = "no"
CADir= "/home/autosscep/"
CertDir= "/home/autosscep/"
KeyDir= "/home/autosscep/"
[CA\]
DN= "C=SE, O=EJBCA Sample, CN=ManagementCA"
URL= "http://localhost:8080/ejbca/publicweb/apply/scep/pkiclient.exe"
CertFile= "ManagementCA.cacert.pem"
EncCertFile= "ManagementCA.cacert.pem"
[ /CA \]
[Certificate\]
CertFile= "mycert"
KeyFile= "mykey"
CADN= "C=SE, O=EJBCA Sample, CN=ManagementCA"
 
# Create a user with username "router4711" and password "foo123" in EJBCA
# to automatically enroll
# Note you need to add a user with exactly these fields in the DN in EJBCA
Email = "mymail@mydomain"
Country= "SE"
State= "BS"
Location= "Stockholm"
Organization= "PrimeKey"
CommonName= "router4711"
ChallengePassword= "foo123"
[ /Certificate \]

AutoSscep también gestiona la inscripción en una RA, donde esta envía primero una respuesta PENDIENTE indicando que la solicitud está siendo procesada. Tras el procesamiento (por parte de la CA), simplemente vuelva a ejecutar el cliente de AutoSscep para obtener el certificado generado.

Para inscribirse en el servidor SCEP de RA externa en EJBCA, modifique la sección de CA del archivo de configuración para usar el certificado del servidor SCEP de RA para firmar y cifrar los mensajes en lugar de las CA, y para usar la URL de la RA. El certificado de RA de SCEP es el certificado de entidad final emitido para el servidor SCEP de RA externa (el almacén de claves suele llamarse scepraserver.p12).

[CA\]
DN= "C=SE, O=EJBCA Sample, CN=ManagementCA"
URL= "http://localhost:8080/scepraserver/scep/pkiclient.exe"
CertFile= "scepra.pem"
EncCertFile= "scepra.pem"
[ /CA \]