我正在尝试通过传递服务器IP,SslStream.AuthenticateAsClient
和SslProtocols.Tls
从C#使用X509Certificate2Collection
方法发送APN。但是我收到一条错误消息:
Authentication failed because remote party has closed the transport stream
我已经尝试了这里讨论的所有解决方案,但没有任何效果。请帮助下面是代码
X509Certificate2Collection certs = new X509Certificate2Collection();
X509Certificate2 xcert = new X509Certificate2();
xcert.Import(@"D:\certify.p12", "password", X509KeyStorageFlags.UserKeySet);
certs.Add(xcert);
// Apple development server address
string apsHost;
if (xcert.ToString().Contains(ProductionKeyFriendName))
apsHost = "gateway.push.apple.com";
else
apsHost = "gateway.sandbox.push.apple.com";
// Create a TCP socket connection to the Apple server on port 2195
TcpClient tcpClient = new TcpClient();
tcpClient.Connect(apsHost, 2195);
// Create a new SSL stream over the connection
sslStream = new SslStream(tcpClient.GetStream());
// Authenticate using the Apple cert
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;
sslStream.AuthenticateAsClient(apsHost, certs, System.Security.Authentication.SslProtocols.Tls, false);
return true;
最佳答案
禁用SSL3后,我也遇到了同样的情况。生成新证书后,它开始工作。
关于.net - APN失败,显示 "Authentication failed because the remote party has closed the transport stream",我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31334970/