【问题标题】:Apple MDM CSR Signing fails on Signature validationApple MDM CSR 签名在签名验证时失败
【发布时间】:2012-03-21 15:53:42
【问题描述】:

过去几天我一直在努力解决这个问题。想知道有没有其他人遇到过这种情况。我正在尝试使用我的 MDM 供应商证书签署 CSR。我正在按照

中的说明进行操作

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

以下是计算 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":"Certificate Signature Verification failed","ErrorDescription":"Certificate Signature Verification failed because the http://www.apple.com/business/mdm\" target= \"_blank\">签名无效。"}

有人知道怎么回事吗?

【问题讨论】:

  • 发现问题,签名代码工作正常,证书链有问题,返回的错误指向签名,具有误导性。
  • 请问是什么问题?因为我有同样的问题
  • 我的问题是我发送的证书链使用了错误的 CA 证书,它需要来自 Apple WWDR CA。
  • 请发布您的解决方案作为答案

标签: java apple-push-notifications mdm


【解决方案1】:

发现问题,签名代码工作正常,证书链有问题,返回的错误指向签名,具有误导性。

我的问题是我发送的证书链使用了错误的 CA 证书,它需要来自 Apple WWDR CA。

【讨论】:

  • 我为 MDM 生成了推送证书。它有一个有效的主题/主题。在钥匙串商店中查看时,它显示“此证书由未知机构签名”。也没有与之关联的私钥。知道有什么问题吗?
  • 也许你没有苹果根证书?我认为它们可以在苹果的网站上下载。 apple.com/certificateauthority 没有私钥可能是因为从苹果那里,你得到了公共部分,你需要把它和私钥结合起来,使它成为一个完整的 p12 文件。通常创建 CSR 的工具会为你做这件事,如果你在同一台机器上完成请求..
  • 感谢您的提示。 “未知权限”问题现已解决。但我仍然坚持使用 .p12 文件。我正在使用 Mac 并遵循 softhinker.com/in-the-news/iosmdmvendorcsrsigning 后跟 stackoverflow.com/a/9756116/864850 合并公钥/私钥。但是我仍然没有在钥匙串中获得带有推送证书的私钥。知道我哪里错了吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-01-20
  • 1970-01-01
  • 1970-01-01
  • 2017-11-28
  • 2013-10-28
  • 2020-11-02
  • 2016-01-13
相关资源
最近更新 更多