证书签名验证失败

时间:2012-05-30 10:06:32

标签: objective-c ios x509certificate mdm

当我尝试将证书上传到https://identity.apple.com/pushcert/时,它会告诉我签名无效。

我一步一步地按照移动设备管理器文档和http://www.softhinker.com/in-the-news/iosmdmvendorcsrsigning进行操作。我正在使用C#.NET

plist_encoded文件的格式是正确的。

//Load signing certificate from MDM_pfx.pfx, this is generated using signingCertificatePrivate.pem and SigningCert.pem.pem using openssl
var cert = new X509Certificate2(MY_MDM_PFX, PASSWORD, X509KeyStorageFlags.Exportable);
//RSA provider to generate SHA1WithRSA
//Signed private key - PushCertSignature
var crypt = (RSACryptoServiceProvider)cert.PrivateKey;
var sha1 = new SHA1CryptoServiceProvider();
byte[] data = Convert.FromBase64String(csr);
byte[] hash = sha1.ComputeHash(data);
//Sign the hash
byte[] signedHash = crypt.SignHash(hash, CryptoConfig.MapNameToOID("sha1RSA"));
hashedSignature = Convert.ToBase64String(signedHash);

//Read Certificate Chain
String mdm = signCSR.readCertificate(mdmCertificate);
String intermediate = signCSR.readCertificate(intermediateCertificate);
String root = signCSR.readCertificate(rootCertificate);

StringBuilder sb = new StringBuilder(); ;
sb.Append(mdm);
sb.Append(intermediate);
sb.Append(root);

signCSR.PushCertWebRequest(csr, sb.ToString(), hashedSignature);

我不确定在MDM_pfx.pfx中放置什么。我做的是我生成了cst以上传到企业iOS Provisioning门户,我下载证书生成一个 然后我导出了我生成的CSR的私钥,并将其导出为.pfx文件。 这是我使用的文件。

这是正确的方法吗?

2 个答案:

答案 0 :(得分:1)

您必须上传到https://identity.apple.com/pushcert/的不仅仅是证书,它还是带有证书链的plist(XML)。您可以使用示例Java应用程序(http://www.softhinker.com/in-the-news/iosmdmvendorcsrsigning)进行参考。

答案 1 :(得分:0)

我通过使用以下方法解决了这个问题:C:\ Program Files(x86)\ GnuWin32 \ bin> openssl pkcs12 -export -out mdmapnspfx.pfx - inkey mdmpk.pem -in mdm.pem

密钥错误,我没有使用mdm.pem证书,因为它是自签名的。