iOS MDM Enrollment Profile Запрос / профиль для подписи сертификата с использованием Java

1

Привет, мы пытаемся создать сервер MDM iOS с помощью java. Я застрял в самом первом месте, где мы должны подписать сертификат и отправить SCEP. Сначала я отправил файл pl зачисления на устройство ios. В ответ на это я получаю HttpServletRequest с устройства ios, когда мы нажимаем "Установить" с устройства.

Он использует URL-адрес, который содержит URL-адрес запроса профиля, и запрос получен для него в java. Прочитав request.getInputStream, я узнал, что запрос состоит из двух частей. Один - это plist, другой - сертификат устройства.

печать файла я получил ниже plist:

<?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>CHALLENGE</key>
    <string>challengesessionvalue1234</string>
    <key>UDID</key>
    <string>b3d8980d72a6c2abf4f936862e8c50a734ccc030</string>
</dict>
</plist>

Он содержит строку "Challenge", которая была отправлена во время регистрации. Также он дает UDID устройства. Эта часть была получена путем чтения входного потока запроса в java с использованием байтов.

Другая часть, содержащая request.getInputStream, - это подписанная pkcs информация сертификата сертификата Apple, как показано ниже:

PKCS7 :: signer infos: 
    0.  Signer Info for (issuer): CN=Apple iPhone Device CA, OU=Apple iPhone, O=Apple Inc., C=US
    version:     01
    certificateSerialNumber:     0252f631 cadff5f3 99986
    digestAlgorithmId: SHA
    authenticatedAttributes: PKCS9 Attributes: [
    [ContentType: 1.2.840.113549.1.7.1];
    [MessageDigest: 0000: E1 BF 36 1B 11 5C CB 0E   E6 1C 57 4F 09 FC 55 B4  ..6..\....WO..U.
0010: D9 C1 E0 1E                                        ....
];
    [SigningTime: Wed Jul 30 11:46:02 UTC 2014]
    ] (end PKCS9 Attributes)
    digestEncryptionAlgorithmId: RSA
    encryptedDigest: 
0000: C5 11 AC 76 89 E7 43 BD   A3 03 5F 14 4B 08 BD E4  ...v..C..._.K...
0010: 5E F9 55 BA A7 F5 4E 43   E0 74 FD 06 D2 E2 88 03  ^.U...NC.t......
0020: C4 9C 88 A2 01 E0 9C 63   62 C2 D9 1A BD FC 00 B3  .......cb.......
0030: 64 30 8F 00 BD F4 4A B9   4E EA D5 C6 7B 26 1C 01  d0....J.N....&..
0040: A5 E2 B7 27 B9 7A A8 2D   22 97 E3 D9 24 7B 8B 24  ...'.z.-"...$..$
0050: 84 49 7C 38 1B A7 56 80   B8 CD 1A 44 9C AF 79 D9  .I.8..V....D..y.
0060: 86 12 B5 31 D1 BD 5C 27   F6 64 BC EC DC 02 19 A5  ...1..\'.d......
0070: 25 A5 09 F2 BB 11 67 78   3E DC D4 03 F2 E4 8D C0  %.....gx>.......

Я не копировал весь файл, поскольку он был огромным. Чтобы прочитать эту часть, я использовал PKCS7 для java из пакета sun.security.pkcs.

Сначала я хотел бы прочитать значение "Challenge" и аутентифицировать сертификат, используя сам вызов, так как это будет уникальное значение сеанса для нас. Я просто хочу передать сертификат знака на устройство iOS, чтобы продолжить.

Укажите код java, который поможет разобрать этот request.getInputStream. Тип содержимого запроса = "application/pkcs7-signature" И как мне передать ответ. Нужно ли снова создавать сертификат?

Пожалуйста помоги. Надеюсь, я убедился в сомнении. Заранее спасибо.!!

Теги:
mdm

1 ответ

1

Позвольте мне попытаться сломать ваш вопрос на несколько подзапросов и ответить.

Я застрял в самом первом месте, где мы должны подписать сертификат и отправить SCEP.

Честно говоря, я не мог понять, о чем вы говорите.

Основываясь на полученном вами ответе, вы делаете это: https://developer.apple.com/library/ios/documentation/networkinginternet/conceptual/iphoneotaconfiguration/OTASecurity/OTASecurity.html

И вы на втором этапе, шаг 1.

Сначала я хотел бы прочитать значение "Challenge" и аутентифицировать сертификат, используя сам вызов, так как это будет уникальное значение для сеанса для нас

Еще раз. Я не уверен на 100%, что вы имеете в виду. В частности, "аутентифицировать сертификат, используя сам вызов"

Вы должны сделать две вещи на этих шагах

  • Аутентификация этого запроса с использованием выписки запроса из запроса
  • Подтвердите подпись (убедитесь, что она правильно подписи и что она подписана соответствующим сертификатом Apple).
  • если все правильно (вызов и сертификат), тогда вы должны отправить либо профиль с полезной нагрузкой SCEP, либо полезную нагрузку PKCS12

Укажите код java, который поможет разобрать этот request.getInputStream. Чтобы прочитать эту часть, я использовал PKCS7 для java из пакета sun.security.pkcs.

Я бы рекомендовал посмотреть на замок Бунси. Это отличная библиотека, которая обрабатывает криптографию.

И найдите "Баунси замок подтвердите подпись":

X.509 Проверка сертификата с помощью Java и Bouncycastle

http://www.nakov.com/blog/2009/12/01/x509-certificate-validation-in-java-build-and-verify-chain-and-verify-clr-with-bouncy-castle/

Ещё вопросы

Сообщество Overcoder
Наверх
Меню