2012-05-30 252 views
0

當我嘗試上傳證書到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 I的私鑰並將其導出爲.pfx文件。 這是我使用的文件。

這是正確的方法嗎?

回答

0

我使用解決了這個問題\程序文件(x86)\的GnuWin32 \ BIN> OpenSSL的PKCS12 -export退房手續mdmapnspfx.pfx - INKEY mdmpk.pem -in mdm.pem

的關鍵是不正確的,我沒有使用mdm.pem證書,它是自簽名的。

1

你必須上傳到https://identity.apple.com/pushcert/不只是證書,它是一個帶有證書鏈的plist(XML)。可以使用一個示例Java應用程序(http://www.softhinker.com/in-the-news/iosmdmvendorcsrsigning),您應該可以使用該應用程序作爲參考。 C:

+0

yes ive生成plist XML。與客戶的CSR,證書鏈和簽名。就像你引用的那個:/ – michelle

+0

你有Base64編碼的XML嗎? – Abstractec

+0

是的。它是基數64. – michelle