日期:2014-05-17  浏览次数:20993 次

向ios推送消息,用SSL加密向APNS服务器验证身份时报错。
首先创建证书
X509Certificate2 certificate = new X509Certificate2(System.IO.File.ReadAllBytes("证书路径"),"证书密码");
X509CertificateCollection certificates = new X509CertificateCollection();
certificates.Add(certificate);

然后建立连接
TcpClient apnsClient = new TcpClient("gateway.sandbox.push.apple.com", 2195);

SslStream apnsStream = new SslStream(apnsClient.GetStream(),  
                        true,
                        new RemoteCertificateValidationCallback(validateServerCertificate),
      new LocalCertificateSelectionCallback(selectLocalCertificate);


这里抛出错误
apnsStream.AuthenticateAsClient("gateway.sandbox.push.apple.com",
                         certificates,
                         System.Security.Authentication.SslProtocols.Ssl3,
                         false);

调用 SSPI 失败,请参见内部异常。

请问这是什么原因?
IOS推送

------解决方案--------------------
其实这个问题是证书的问题,晚上很多教程生成的证书都是php服务器用的,这个证书在.net是不行的,要多加一步生成是.net用的p12才行,具体的可以参照http://hi.baidu.com/yang_qi168/item/480304c542fd246489ad9e91这个里面最后生成p12的那条语句