Apple MDM Поставщик CSR Подписание - PullRequest
11 голосов
/ 14 декабря 2011

Я нажимаю ' Неверный запрос на подпись сертификата ' при загрузке списка в https://identity.apple.com/pushcert/, и ниже приведены шаги, которые я использовал для создания списка:

  1. Как поставщиксоздайте CSR поставщика с помощью KeyChain Access MacBook для загрузки в центр участников для создания сертификата подписи MDM и экспортируйте закрытый ключ из KeyChain Access в формате p12, например, vendor.p12
  2. Создайте CSR клиента с помощью Openssl: - openssl genrsa -des3 -out customerPrivateKey.pem 2048- openssl req -new -key customerPrivateKey.pem -out customer.csr
  3. В качестве поставщика загрузите сертификат подписи MDM, промежуточный сертификат WWDR с портала обеспечения и загрузите корневой сертификат Apple с http://www.apple.com/appleca/AppleIncRootCertificate.cer,, затем используйте команду ниже, чтобы преобразовать эти три сертификата в формат PEM один за другим, который будет считываться программой как PushCertCertificateChain: - openssl x509 -inform der -in AppleWWDRCA.cer -out chain.pem
  4. Как поставщик, следуя примеру java-кода в Справочнике по протоколу управления мобильными устройствами, я подписываю customer.csr с помощьюзакрытый ключ, извлеченный из vendor.p12
  5. Использование Safari для загрузки сгенерированного plist в https://identity.apple.com/pushcert/ с Apple ID клиента

Что-то не так с вышеуказанными шагами?Пожалуйста, порекомендуйте.Большое спасибо!

Ответы [ 4 ]

4 голосов
/ 19 декабря 2011

Пожалуйста, смотрите подробные шаги и исходный код здесь , чтобы сгенерировать plist.

3 голосов
/ 24 апреля 2013

Я создал скрипт Python, который выполняет роль подписчика, поэтому вам не нужно использовать код Java.

https://github.com/grinich/mdmvendorsign

2 голосов
/ 15 июня 2012

при просмотре страницы http://www.softhinker.com/in-the-news/iosmdmvendorcsrsigning, в качестве поставщика Как продавец,

  • создайте CSR, используя любой инструментарий, то есть KeyChain Access на MacBook, затем экспортировать закрытый ключ как vendor.p12
  • войдите в Apple Member Center и перейдите на «Портал обеспечения iOS»
  • выберите «Сертификаты» на левой навигационной панели и нажмите вкладку «Другие» в центре.
  • следуйте инструкциям на этой странице и загрузите созданный вами CSR.
  • тогда сертификат для вас как поставщика MDM будет доступен для загрузки на вкладке «Прочее». И скачать его.
  • скачать промежуточный сертификат WWDR.
  • скачать корневой сертификат Apple.
  • выполнить нижеприведенную команду openssl для преобразования сертификата поставщика MDM, сертификата WWDR и корневого сертификата Apple в формат PEM по одному:

    openssl x509 -inform der -in mdm_identity.cer -out mdm.pem

    openssl x509 -информировать - в AppleWWDRCA.cer -out промежуточный.pem

    openssl x509 - сообщить об этом - в AppleIncRootCertificate.cer -out root.pem

Затем используйте прилагаемую Java-программу в http://www.softhinker.com/in-the-news/iosmdmvendorcsrsigning для генерации закодированного plist. Теперь сначала проверьте сгенерированный формат plist.xml, который должен соответствовать образцу plist.xml, предоставленному в Справочном документе протокола MDM.

Если файл plist.xml находится в соответствующем формате, загрузите кодированный кодировщик в https://identity.apple.com/pushcert/. Поэтому нам нужно позаботиться о том, чтобы plist.xml только для справки, а не для загрузки. Только для загрузки encoded_plist.

  • не забудьте заменить заполнитель в пакете на свой, потому что в пакете java указан только один пример (нулевой размер):

    customer.der, vendor.p12, mdm.pem, промежуточный.pem, root.pem


если мы выполняем действия клиента для создания сертификата MDM для сервера MDM

Как клиент,

  • создать CSR, используя любой инструментарий, то есть openssl:

    openssl genrsa -des3 -out customerPrivateKey.pem 2048

    openssl req -new -key customerPrivateKey.pem -out customer.csr

  • конвертировать customer.csr в формат der:

    openssl req -inform pem -outform der -in customer.csr -out customer.der

тогда нам нужно проверить несколько вещей.

1) удалите парольную фразу из customerPrivateKey.pem с помощью этой команды

openssl rsa -in customerPrivateKey.pem -out PlainKey.pem

2) Затем объедините свой сертификат APNS (например, CustomerCompanyName.pem), загруженный с портала https://identity.apple.com/pushcert/, с помощью этой команды

cat CustomerCompanyName.pem PlainKey.pem > PlainCert.pem

Теперь этот файл PlainCert.pem можно использовать на вашем сервере в качестве сертификата APNS / MDM, как указано в MDM_Protocol pdf для примера сервера MDM.

0 голосов
/ 05 января 2018

Пожалуйста, ознакомьтесь с моими заметками о подписании Apple MDM CSR от поставщика ниже. Некоторые команды могут зависеть от стандартных инструментов linux и linux, но портирование на другие платформы должно быть тривиальным.

Подготовить необходимые сертификаты

яблочный корень

wget https://www.apple.com/appleca/AppleIncRootCertificate.cer
openssl x509 -inform DER -outform PEM -in AppleIncRootCertificate.der -out AppleIncRootCertificate.pem
openssl x509 -fingerprint -sha256 -noout -in AppleIncRootCertificate.pem
# SHA256 Fingerprint=B0:B1:73:0E:CB:C7:FF:45:05:14:2C:49:F1:29:5E:6E:DA:6B:CA:ED:7E:2C:68:C5:BE:91:B5:A1:10:01:F0:24
openssl x509 -fingerprint -noout -in AppleIncRootCertificate.pem
# SHA1 Fingerprint=61:1E:5B:66:2C:59:3A:08:FF:58:D1:4A:E2:24:52:D1:98:DF:6C:60

Apple WWDR

wget https://developer.apple.com/certificationauthority/AppleWWDRCA.cer
openssl x509 -inform DER -outform PEM -in AppleWWDRCA.der -out AppleWWDRCA.pem
openssl verify -verbose -CAfile AppleIncRootCertificate.pem AppleWWDRCA.pem

Поставщик MDM CSR

openssl genrsa -out apple-mdm-csr.key 2048
openssl req -new -key apple-mdm-csr.key -subj '/CN=MDM' -out apple-mdm-csr.csr
# GET apple-mdm-csr.der ('https://developer.apple.com/' -> 'Account' -> 'Certificates, IDs & Profiles')
openssl x509 -inform DER -outform PEM -in apple-mdm-csr.cer -out apple-mdm-csr.pem
openssl verify -verbose -CAfile AppleIncRootCertificate.pem -untrusted AppleWWDRCA.pem apple-mdm-csr.pem

CSR клиента (генерируется в помещении для клиента)

#openssl genrsa -out customer.key 2048
#openssl req -new -key customer.key -subj '/CN=MDM' -out customer.csr

Подписать CSR клиента

openssl req -inform PEM -outform DER -in customer.csr -out customer.csr.der
openssl sha1 -sign apple-mdm-csr.key -out customer.csr.der.sig customer.csr.der

... готовиться к яблоку

base64 -w0 customer.csr.der >customer.csr.der.b64
base64 -w0 customer.csr.der.sig >customer.csr.der.sig.b64

cat <<EOF >customer.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>PushCertCertificateChain</key>
        <string>
            $(<apple-mdm-csr.pem)
            $(<AppleWWDRCA.pem)
            $(<AppleIncRootCertificate.pem)
        </string>
        <key>PushCertRequestCSR</key>
        <string>
            $(<customer.csr.der.b64)
        </string>
        <key>PushCertSignature</key>
        <string>
            $(<customer.csr.sig.b64)
        </string>
    </dict>
    </plist>
EOF

base64 -w0 customer.plist >customer.plist.b64

Резюме (все в одном)

bash -e -c '
# Take CSR from STDIN and output base64 encoded plist for Apple
APPLE_MDM_CSR_CRT="apple-mdm-csr.pem"
APPLE_MDM_CSR_KEY="apple-mdm-csr.key"
APPLE_INTERMEDIATE_CRT="AppleWWDRCA.pem"
APPLE_ROOT_CRT="AppleIncRootCertificate.pem"
CUSTOMER_CSR_DER="/proc/self/fd/3"

TMP="$(mktemp -p /run)"
exec 3<> "$TMP"
rm -f "$TMP"

openssl req -inform PEM -outform DER -out "$CUSTOMER_CSR_DER"

base64 -w0 <<EOF
<?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>PushCertCertificateChain</key>
<string>
$(<$APPLE_MDM_CSR_CRT)
$(<$APPLE_INTERMEDIATE_CRT)
$(<$APPLE_ROOT_CRT)
</string>
<key>PushCertRequestCSR</key>
<string>$(base64 -w0 "$CUSTOMER_CSR_DER")</string>
<key>PushCertSignature</key>
<string>$(openssl sha1 -sign "$APPLE_MDM_CSR_KEY" "$CUSTOMER_CSR_DER" | base64 -w0)</string>
</dict>
</plist>
EOF

exec 3>&-'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...