Error al combinar sload y mdm payloads: el servidor de inscripción no proporcionó un certificado de identidad válido

Estoy trabajando en lanzar mi propio servicio de MDM, y estoy tratando de combinar las cargas útiles de SCEP y MDM como sugiere el documento de protocolo MDM de Apple. Creé mi propio servicio web SCEP en C # .Net y sé que el dispositivo puede obtener un certificado válido cuando acabo de enviar la carga útil de SCEP. Sin embargo, cuando también incluyo una carga útil de MDM que apunta al UUID de la carga útil de SCEP a través de la clave IdentityCertificateUUID, obtengo el siguiente error "El servidor de inscripción no proporcionó un certificado de identidad válido."Esta configuración es la que se envía después de que el usuario elija instalar la configuración de inscripción inicial (paso 1 de la fase 2 enesta diagrama).

Parece que el dispositivo ni siquiera intenta conectarse a mi servidor y, gracias al registro del lado del servidor, sé que nunca llega a mi página de servicio web SCEP. Esto parece indicar que hay algo mal con el certificado que utilizo para firmar la carga útil. He intentado firmarlo por separado con mi certificado SSL (de una autoridad raíz de confianza previa), mi certificado de inserción MDM de mi cliente (encadenado por nuestro certificado de proveedor) y mi certificado de autoridad de certificado raíz autofirmado (creado a través de makecert.exe) que El servicio SCEP utiliza para emitir nuevos certificados (es decir, certificados de identidad del dispositivo).

He visto la salida de la iPCU (Utilidad de configuración de iPhone) cuando creo un perfil con las cargas útiles de MDM y SCEP, y no es un perfil válido (incluso he intentado copiarlo casi al por mayor). Sin embargo, cuando instalo el perfil a través de la iPCU, el error no aparece y comienza el proceso de inscripción de SCEP sin problemas.

Una nota al margen: usar un proveedor de MDM preexistente no es una opción aquí.

A continuación se muestra el perfil que estoy usando:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  <plist version="1.0">
    <dict>
      <key>PayloadContent</key>
      <array>
        <dict>
          <key>PayloadContent</key>
          <dict>
            <key>Challenge</key>
            <string>this is a challenge</string>
            <key>Key Type</key>
            <string>RSA</string>
            <key>Key Usage</key>
            <integer>5</integer>
            <key>Keysize</key>
            <integer>1024</integer>
            <key>Name</key>
            <string>mycompany</string>
            <key>Retries</key>
            <integer>3</integer>
            <key>RetryDelay</key>
            <integer>0</integer>
            <key>Subject</key>
            <array><array><array>
              <string>CN</string>
              <string>mycompany</string>
            </array></array></array>
            <key>URL</key>
            <string>https://mysite.com/scep.aspx</string>
          </dict>
          <key>PayloadDescription</key>
          <string>Configures SCEP</string>
          <key>PayloadDisplayName</key>
          <string>SCEP (mycompany)</string>
          <key>PayloadIdentifier</key>
          <string>com.mycompany.mdm.scep1</string>
          <key>PayloadOrganization</key>
          <string></string>
          <key>PayloadType</key>
          <string>com.apple.security.scep</string>
          <key>PayloadUUID</key>
          <string>57225d3d-0758-4d23-8093-e4d8c9bbd47c</string>
          <key>PayloadVersion</key>
          <integer>1</integer>
        </dict>
        <dict>
          <key>AccessRights</key>
          <integer>3</integer>
          <key>CheckInURL</key>
          <string>mysite.com/checkin.aspx</string>
          <key>CheckOutWhenRemoved</key>
          <false/>
          <key>IdentityCertificateUUID</key>
          <string>57225d3d-0758-4d23-8093-e4d8c9bbd47c</string>
          <key>PayloadDescription</key>
          <string>Configures MobileDeviceManagement.</string>
          <key>PayloadIdentifier</key>
          <string>com.mycompany.mdm.mdm2</string>
          <key>PayloadOrganization</key>
          <string></string>
          <key>PayloadType</key>
          <string>com.apple.mdm</string>
          <key>PayloadUUID</key>
          <string>ed0ae41d-1aa7-4721-9fe9-139c1072132c</string>
          <key>PayloadVersion</key>
          <integer>1</integer>
          <key>ServerURL</key>
          <string>https://mysite.com/checkin.aspx</string>
          <key>SignMessage</key>
          <false/>
          <key>Topic</key>
          <string>com.apple.mgmt.mypushsubject</string>
          <key>UseDevelopmentAPNS</key>
          <true/>
        </dict>
      </array>
      <key>PayloadDescription</key>
      <string>Profile description.</string>
      <key>PayloadDisplayName</key>
      <string>Test Profile</string>
      <key>PayloadIdentifier</key>
      <string>com.mycompany.mdm</string>
      <key>PayloadOrganization</key>
      <string>mycompany</string>
      <key>PayloadRemovalDisallowed</key>
      <false/>
      <key>PayloadType</key>
      <string>Configuration</string>
      <key>PayloadUUID</key>
      <string>13321058-4037-478c-9b1e-ef6f810065cb</string>
      <key>PayloadVersion</key>
      <integer>1</integer>
    </dict>
  </plist>

Respuestas a la pregunta(1)

Su respuesta a la pregunta