I am trying to send an APN from C # using the SslStream.AuthenticateAsClient method, passing the server IP address, SslProtocols.Tls and X509Certificate2Collection . But I get an error message:
Authentication failed because remote party has closed the transport stream
I tried all the solutions discussed here, but nothing works. Below is the code
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;
source share