5

最近几天我一直在纠结这个问题。想知道有没有其他人遇到过这种情况。我正在尝试使用我的 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":"证书签名验证失败","ErrorDescription":"证书签名验证失败,因为 http://www.apple.com/business/mdm\" target=\"_blank \">签名</a> 无效。"}

有谁知道出了什么问题?

4

1 回答 1

3

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

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

于 2012-08-17T22:30:29.457 回答