用SSL连接苹果Apns服务器,求救,分数不够可补

welove1983 2011-05-25 04:46:22
首先创建证书
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 失败,请参见内部异常。

...全文
1562 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
duanmu19891209 2013-12-04
  • 打赏
  • 举报
回复
...你那个SSPI调用失败是怎么解决的?
waiwai520myy 2013-06-28
  • 打赏
  • 举报
回复
其实这个问题是证书的问题,晚上很多教程生成的证书都是php服务器用的,这个证书在.net是不行的,要多加一步生成是.net用的p12才行,具体的可以参照http://hi.baidu.com/yang_qi168/item/480304c542fd246489ad9e91这个里面最后生成p12的那条语句
waiwai520myy 2013-06-28
  • 打赏
  • 举报
回复
有没有人解决这个问题呀
xiaozhunamen 2012-10-24
  • 打赏
  • 举报
回复
楼主解决了也不给分享下,真不给力以后谁还会回答你问题,记着你名字了
littlyfx 2012-09-12
  • 打赏
  • 举报
回复
楼主你太不厚道啦,怎么解决的撒
sujeking 2012-08-06
  • 打赏
  • 举报
回复
楼主,你是怎么解决的啊,指导指导一下啊。我没有办法了。
WillJGL 2012-06-06
  • 打赏
  • 举报
回复
楼主,你自己有问题的时候也知道多着急
看看下面问的人应该也很着急
你就说一句解决了,其他的什么都不说
哎.......
jesuzjl104 2012-01-16
  • 打赏
  • 举报
回复
是怎么解决的?
湖畔听雪 2012-01-03
  • 打赏
  • 举报
回复
connect一直就返回0,为何呢????
Danielxy 2011-10-20
  • 打赏
  • 举报
回复
楼主呀,是怎么解决的哟,我也很想知道,我是这样的:
/* Set up the library */
ERR_load_BIO_strings();
SSL_load_error_strings();
OpenSSL_add_all_algorithms();
SSL_library_init();

/* Set up the SSL context */
ctx = SSL_CTX_new(SSLv23_client_method());

/* Load the trust store */

if(! SSL_CTX_load_verify_locations(ctx, "./mycert.pem", NULL))
{
fprintf(stderr, "Error loading trust store\n");
ERR_print_errors_fp(stderr);
SSL_CTX_free(ctx);
return 0;
}

/* Setup the connection */

bio = BIO_new_ssl_connect(ctx);

/* Set the SSL_MODE_AUTO_RETRY flag */
BIO_get_ssl(bio, & ssl);
SSL_set_mode(ssl, SSL_MODE_AUTO_RETRY);

/* Create and setup the connection */

BIO_set_conn_hostname(bio, "gateway.sandbox.push.apple.com:2195");

long connectresult = BIO_do_connect(bio);

到这里:

1/ BIO_do_connect(bio) 死活都不能返回 1, 永远是0,或者-1。

2/ 我可以用 telnet 访问 gateway.sandbox.push.apple.com:2195,所以网络应该没问题

3/ 如果把地址换成一般的 https 网站也可以连接上。

4/ 但是如果用 gateway.sandbox.push.apple.com:2195,就连不上

5/ 到这里应该和 PEM 没关系,只是建立连接

为什么连不上呢?


楼主帮忙解决下,邮箱danielxy@yahoo.cn
TNB 2011-10-13
  • 打赏
  • 举报
回复
怎么解决的?LZ,我现在也遇到这个问题了。邮箱yy_model@163.com 谢谢
刍狗万物 2011-10-11
  • 打赏
  • 举报
回复
楼主,咋解决的
welove1983 2011-05-26
  • 打赏
  • 举报
回复
自己已经解决... 就3楼挽尊了 分就给你了
solohac 2011-05-26
  • 打赏
  • 举报
回复

ServicePointManager.ServerCertificateValidationCallback =
new System.Net.Security.RemoteCertificateValidationCallback(CheckValidationResult);

HttpWebRequest req = (HttpWebRequest)WebRequest.CreateDefault(new Uri("https://XXX.XXX.com/"));
req.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)";
req.Method = "GET";
req.CookieContainer = CookieArray;
HttpWebResponse res = (HttpWebResponse)req.GetResponse();
welove1983 2011-05-26
  • 打赏
  • 举报
回复
冰天雪地跪求
welove1983 2011-05-25
  • 打赏
  • 举报
回复
冰天雪地跪求啊,报这个错是证书的问题么?

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧