2012-03-21 3 views
5

Я занимаюсь этой проблемой в течение последних нескольких дней. Удивление, если кто-то еще столкнулся с этим. Я пытаюсь подписать CSR с моим сертификатом MDM Vendor. Я следуя инструкциям вПодписание подписки Apple MDM CSR не подтверждается Подтверждение подписи

http://adcdownload.apple.com//Documents/mobile_device_management_protocol/mobiledevicemanagement_121211.pdf

Ниже приводится функция, которая вычисляет signiature для SHA1WthRSA

private static string DoSign(X509Certificate2 signerCert, byte[] csrDerBytes) 
{ 
    var crypt = (RSACryptoServiceProvider)signerCert.PrivateKey; 
    var sha1 = new SHA1CryptoServiceProvider(); 
    byte[] hash = sha1.ComputeHash(csrDerBytes); 
    byte[] signedHash = crypt.SignHash(hash, CryptoConfig.MapNameToOID("SHA1"));    
    return Convert.ToBase64String(signedHash); 
} 

После прикрепления этой подписи к кодированной PLIST, как описано, и загрузить запрос сервер яблока (https://identity.apple.com/pushcert), я получил:

{ "ErrorCode": - 80018, "ErrorMessage": "Подпись сертификата Verifi cation failed "," ErrorDescription ":« Проверка подписи сертификата не удалась, поскольку подпись http: //www.apple.com/business/mdm \ "target = \" _ blank \ "> </a> недействительна."}

Кто-нибудь знает, что не так?

+2

Обнаружена проблема, код подписи работает правильно, это была проблема с цепочкой сертификатов, ошибка была ошибочной, поскольку она указывала на подпись. – savagepanda

+0

В чем проблема? Поскольку у меня такая же проблема – michelle

+0

, моя проблема заключалась в том, что цепочка сертификатов, которую я отправил, использовала неправильный сертификат CA, это должно было быть от Apple WWDR CA. – savagepanda

ответ

3

Обнаружена проблема, код подписи работает правильно, это была проблема с цепочкой сертификатов, ошибка была ошибочной, поскольку она указывала на подпись.

моя проблема была в цепи сертификации, которую я отправил, использовал неправильный сертификат CA, это должно было быть от Apple WWDR CA.

+0

Я сгенерировал сертификат для MDM. Он получил действительный предмет/тему. При просмотре в хранилище брелка говорится: «Этот сертификат был подписан неизвестным органом». Там также нет закрытого ключа, связанного с ним. Любая идея, что не так? – Sahil

+1

Возможно, у вас нет сертификатов корневого яблока? Я думаю, что они доступны на сайте Apple для скачивания. http://www.apple.com/certificateauthority/ нет закрытого ключа, вероятно, из-за того, что из яблока вы получаете общественную часть, вам нужно объединить его с закрытым ключом, чтобы сделать его полным p12-файлом .. обычно создание инструмента CSR сделает это для вас, если вы заполните запрос на том же компьютере. – savagepanda

+0

Спасибо за подсказку. Проблема «неизвестного авторитета» решена сейчас. Но я все еще придерживаюсь файла .p12. Я использую Mac и следую http://www.softhinker.com/in-the-news/iosmdmvendorcsrsigning, а затем http://stackoverflow.com/a/9756116/864850, чтобы объединить общедоступные/закрытые ключи. Но все же я не получаю закрытый ключ с сертификатом Push в цепочке ключей. Любая идея, где я могу ошибаться? – Sahil