Uso de API para agregar ca de terceros para SCEP a Intune

En Microsoft Intune, puede agregar entidades de certificación (CA) de terceros y hacer que estas entidades de certificación emitan y validen certificados mediante el Protocolo simple de inscripción de certificados (SCEP). Agregar entidad de certificación de terceros proporciona información general sobre esta característica y describe las tareas de administrador en Intune.

También hay algunas tareas para desarrolladores que usan una biblioteca de código abierto que Microsoft publicó en GitHub.com. La biblioteca incluye una API que:

  • Valida la contraseña SCEP generada dinámicamente por Intune
  • Notifica a Intune los certificados creados en los dispositivos que envían solicitudes SCEP.

Con esta API, el servidor SCEP de terceros se integra con la solución de administración de SCEP de Intune para dispositivos MDM. La biblioteca abstrae aspectos como la autenticación, la ubicación del servicio y la API de servicio de Intune de ODATA de sus usuarios.

Solución de administración de SCEP

Cómo se integra SCEP de entidad de certificación de terceros con Microsoft Intune

Con Intune, los administradores crean perfiles SCEP y, a continuación, asignan estos perfiles a dispositivos MDM. Los perfiles SCEP incluyen parámetros, como:

  • Dirección URL del servidor SCEP
  • Certificado raíz de confianza de la entidad de certificación
  • Atributos de certificado, etc.

A los dispositivos que se registran con Intune se les asigna el perfil SCEP y se configuran con estos parámetros. Intune crea una contraseña de desafío SCEP generada dinámicamente y, a continuación, se asigna al dispositivo.

Este desafío contiene:

  • Contraseña de desafío generada dinámicamente
  • Detalles sobre los parámetros esperados en la solicitud de firma de certificado (CSR) que el dispositivo emite al servidor SCEP
  • Tiempo de expiración del desafío

Intune cifra esta información, firma el blob cifrado y, a continuación, empaqueta estos detalles en la contraseña de desafío de SCEP.

Los dispositivos que se pongan en contacto con el servidor SCEP para solicitar un certificado y, a continuación, proporcionen esta contraseña de desafío de SCEP. El servidor SCEP envía la csr y la contraseña de desafío de SCEP cifrada a Intune para su validación. Esta contraseña de desafío y CSR deben pasar la validación para que el servidor SCEP emita un certificado al dispositivo. Cuando se valida un desafío de SCEP, se realizan las siguientes comprobaciones:

  • Valida la firma del blob cifrado
  • Valida que el desafío no ha expirado
  • Valida que el perfil todavía está destinado al dispositivo.
  • Valida que las propiedades de certificado solicitadas por el dispositivo en la CSR coinciden con los valores esperados.

La solución de administración de SCEP también incluye informes. Un administrador puede obtener información sobre el estado de implementación del perfil SCEP y sobre los certificados emitidos para los dispositivos.

Integración con Intune

El código de la biblioteca que se va a integrar con el SCEP de Intune está disponible para su descarga en el repositorio de GitHub Microsoft/Intune-Resource-Access.

La integración de la biblioteca en los productos incluye los pasos siguientes. Estos pasos requieren conocimientos sobre cómo trabajar con repositorios de GitHub y crear soluciones y proyectos en Visual Studio.

  1. Registro para recibir notificaciones del repositorio

  2. Clonación o descarga del repositorio

  3. Vaya a la implementación de biblioteca que necesita en la \src\CsrValidation carpeta (https://github.com/Microsoft/Intune-Resource-Access/tree/develop/src/CsrValidation)

  4. Compilación de la biblioteca mediante las instrucciones del archivo LÉAME

  5. Incluir la biblioteca en el proyecto que compila el servidor SCEP

  6. Complete las siguientes tareas en el servidor SCEP:

    • Permitir que el administrador configure el identificador de Aplicación de Azure, la clave de Aplicación de Azure y el identificador de inquilino (en este artículo) que la biblioteca usa para la autenticación. Se debe permitir a los administradores actualizar la clave de Aplicación de Azure.
    • Identificación de solicitudes SCEP que incluyen una contraseña SCEP generada por Intune
    • Uso de la biblioteca de API de validación de solicitudes para validar las contraseñas de SCEP generadas por Intune
    • Use las API de notificación de biblioteca para notificar a Intune sobre los certificados emitidos para las solicitudes SCEP que tienen contraseñas SCEP generadas por Intune. Notifique también a Intune sobre los errores que pueden producirse al procesar estas solicitudes SCEP.
    • Confirme que el servidor registra suficiente información para ayudar a los administradores a solucionar problemas.
  7. Complete las pruebas de integración (en este artículo) y solucione cualquier problema.

  8. Proporcione instrucciones escritas al cliente que explique lo siguiente:

    • Cómo se debe incorporar el servidor SCEP en el centro de administración de Microsoft Intune
    • Cómo obtener el identificador de Aplicación de Azure y la clave de Aplicación de Azure necesarios para configurar la biblioteca

Incorporación de un servidor SCEP en Azure

Para autenticarse en Intune, el servidor SCEP requiere un identificador de Aplicación de Azure, una clave de Aplicación de Azure y un identificador de inquilino. El servidor SCEP también necesita autorización para acceder a la API de Intune.

Para obtener estos datos, el administrador del servidor SCEP inicia sesión en el Azure Portal, registra la aplicación, proporciona a la aplicación el permiso de validación de desafío de API\SCEP Microsoft Intune y el permiso Application.Read.All, crea una clave para la aplicación y, a continuación, descarga el identificador de aplicación, su clave y el identificador del inquilino.

Para obtener instrucciones sobre cómo registrar una aplicación y obtener los identificadores y las claves, consulte Uso del portal para crear una aplicación Microsoft Entra y una entidad de servicio para acceder a los recursos.

API de biblioteca de Java

La biblioteca de Java se implementa como un proyecto de Maven que extrae sus dependencias cuando se compila. La clase implementa la IntuneScepServiceClient API en el com.microsoft.intune.scepvalidation espacio de nombres.

IntuneScepServiceClient (clase)

La IntuneScepServiceClient clase incluye los métodos utilizados por el servicio SCEP para validar contraseñas SCEP, notificar a Intune sobre los certificados que se crean y enumerar los errores.

Constructor IntuneScepServiceClient

Firma:

IntuneScepServiceClient(
    Properties configProperties)

Descripción:

Crea instancias y configura un IntuneScepServiceClient objeto.

Parámetros:

  • configProperties : objeto Properties que contiene información de configuración de cliente

La configuración debe incluir las siguientes propiedades:

  • AAD_APP_ID="El identificador de Aplicación de Azure obtenido durante el proceso de incorporación"
  • AAD_APP_KEY="La clave Aplicación de Azure obtenida durante el proceso de incorporación"
  • TENANT="El identificador de inquilino obtenido durante el proceso de incorporación"
  • PROVIDER_NAME_AND_VERSION="Información usada para identificar el producto y su versión"

Si la solución requiere un proxy con autenticación o sin autenticación, puede agregar las siguientes propiedades:

  • PROXY_HOST="El host en el que se hospeda el proxy".
  • PROXY_PORT="El puerto en el que está escuchando el proxy".
  • PROXY_USER="El nombre de usuario que se usará si el proxy usa la autenticación básica".
  • PROXY_PASS="La contraseña que se usará si el proxy usa la autenticación básica".

Produce:

  • IllegalArgumentException : se produce si el constructor se ejecuta sin un objeto de propiedad adecuado.

Importante

Es mejor crear una instancia de esta clase y usarla para procesar varias solicitudes SCEP. Esto reduce la sobrecarga, ya que almacena en caché los tokens de autenticación y la información de ubicación del servicio.

Notas de seguridad
El implementador del servidor SCEP debe proteger los datos especificados en las propiedades de configuración persistentes en el almacenamiento contra la manipulación y divulgación. Se recomienda usar las ACL y el cifrado adecuados para proteger la información.

ValidateRequest (método)

Firma:

void ValidateRequest(
    String transactionId,
    String certificateRequest)

Descripción:

Valida una solicitud de certificado SCEP.

Parámetros:

  • transactionId : el identificador de transacción de SCEP
  • certificateRequest : PKCS #10 certificado con codificación DER Base64 codificada como una cadena

Produce:

  • IllegalArgumentException : se produce si se llama a con un parámetro que no es válido
  • IntuneScepServiceException : se produce si se encuentra que la solicitud de certificado no es válida
  • Excepción : se produce si se encuentra un error no esperado

Importante

El servidor debe registrar las excepciones producidas por este método. Tenga en cuenta que las IntuneScepServiceException propiedades tienen información detallada sobre por qué se produjo un error en la validación de la solicitud de certificado.

Notas de seguridad:

  • Si este método produce una excepción, el servidor SCEP no debe emitir un certificado al cliente.
  • Los errores de validación de solicitudes de certificado SCEP pueden indicar un problema en la infraestructura de Intune. O bien, podrían indicar que un atacante está intentando obtener un certificado.
Método SendSuccessNotification

Firma:

void SendSuccessNotification(
    String transactionId,
    String certificateRequest,
    String certThumbprint,
    String certSerialNumber,
    String certExpirationDate,
    String certIssuingAuthority)

Descripción:

Notifica a Intune que se crea un certificado como parte del procesamiento de una solicitud SCEP.

Parámetros:

  • transactionId : el identificador de transacción de SCEP
  • certificateRequest : PKCS #10 certificado con codificación DER Base64 codificada como una cadena
  • certThumprint : hash SHA1 de la huella digital del certificado aprovisionado
  • certSerialNumber : número de serie del certificado aprovisionado
  • certExpirationDate : fecha de expiración del certificado aprovisionado. La cadena de fecha y hora debe tener el formato de hora UTC web (AAAA-MM-DDThh:mm:ss.sssTZD) ISO 8601.
  • certIssuingAuthority : nombre de la entidad de certificación que emitió el certificado

Produce:

  • IllegalArgumentException : se produce si se llama a con un parámetro que no es válido
  • IntuneScepServiceException : se produce si se encuentra que la solicitud de certificado no es válida
  • Excepción : se produce si se encuentra un error no esperado

Importante

El servidor debe registrar las excepciones producidas por este método. Tenga en cuenta que las IntuneScepServiceException propiedades tienen información detallada sobre por qué se produjo un error en la validación de la solicitud de certificado.

Notas de seguridad:

  • Si este método produce una excepción, el servidor SCEP no debe emitir un certificado al cliente.
  • Los errores de validación de solicitudes de certificado SCEP pueden indicar un problema en la infraestructura de Intune. O bien, podrían indicar que un atacante está intentando obtener un certificado.
Método SendFailureNotification

Firma:

void SendFailureNotification(
    String transactionId,
    String certificateRequest,
    long  hResult,
    String errorDescription)

Descripción:

Notifica a Intune que se produjo un error al procesar una solicitud SCEP. Este método no se debe invocar para las excepciones producidas por los métodos de esta clase.

Parámetros:

  • transactionId : el identificador de transacción de SCEP
  • certificateRequest : PKCS #10 certificado con codificación DER Base64 codificada como una cadena
  • hResult : código de error de Win32 que describe mejor el error que se encontró. Consulte Códigos de error de Win32
  • errorDescription : descripción del error encontrado

Produce:

  • IllegalArgumentException : se produce si se llama a con un parámetro que no es válido
  • IntuneScepServiceException : se produce si se encuentra que la solicitud de certificado no es válida
  • Excepción : se produce si se encuentra un error no esperado

Importante

El servidor debe registrar las excepciones producidas por este método. Tenga en cuenta que las IntuneScepServiceException propiedades tienen información detallada sobre por qué se produjo un error en la validación de la solicitud de certificado.

Notas de seguridad:

  • Si este método produce una excepción, el servidor SCEP no debe emitir un certificado al cliente.
  • Los errores de validación de solicitudes de certificado SCEP pueden indicar un problema en la infraestructura de Intune. O bien, podrían indicar que un atacante está intentando obtener un certificado.
Método SetSslSocketFactory

Firma:

void SetSslSocketFactory(
    SSLSocketFactory factory)

Descripción:

Use este método para informar al cliente de que debe usar el generador de socket SSL especificado (en lugar del valor predeterminado) al comunicarse con Intune.

Parámetros:

  • factory : el generador de sockets SSL que el cliente debe usar para las solicitudes HTTPS.

Produce:

  • IllegalArgumentException : se produce si se llama a con un parámetro que no es válido

Nota:

El generador de sockets SSL debe establecerse si es necesario antes de ejecutar los otros métodos de esta clase.

Pruebas de integración

Es necesario validar y probar que la solución está correctamente integrada con Intune. A continuación se muestra información general de los pasos:

  1. Configure una cuenta de prueba de Intune.
  2. Incorpore el servidor SCEP en el Azure Portal (en este artículo).
  3. Configure el servidor SCEP con los identificadores y la clave creados al incorporar el servidor SCEP.
  4. Inscriba dispositivos para probar los escenarios de la matriz de pruebas de escenarios.
  5. Cree un perfil de certificado raíz de confianza para la entidad de certificación de prueba.
  6. Cree perfiles SCEP para probar los escenarios enumerados en la matriz de pruebas de escenarios.
  7. Asigne los perfiles a los usuarios que inscribieron sus dispositivos.
  8. Espere a que los dispositivos se sincronicen con Intune. O bien, sincronice manualmente los dispositivos.
  9. Confirme que el certificado raíz de confianza y los perfiles SCEP se implementan en los dispositivos.
  10. Confirme que el certificado raíz de confianza está instalado en todos los dispositivos.
  11. Confirme que los certificados SCEP para los perfiles asignados están instalados en todos los dispositivos.
  12. Confirme que las propiedades de los certificados instalados coinciden con las propiedades establecidas en el perfil SCEP.
  13. Confirme que los certificados emitidos aparecen correctamente en el Centro de administración de Intune.

Vea también