向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 失败,请参见内部异常。
请问这是什么原因?
------解决方案--------------------其实这个问题是证书的问题,晚上很多教程生成的证书都是php服务器用的,这个证书在.net是不行的,要多加一步生成是.net用的p12才行,具体的可以参照http://hi.baidu.com/yang_qi168/item/480304c542fd246489ad9e91这个里面最后生成p12的那条语句