Проверка подлинности APNS SSlStream завершилась неудачно, поскольку удаленная сторона закрыла транспортный поток - PullRequest
2 голосов
/ 07 января 2011

Я пытаюсь отправить уведомление на iphone, используя asp.net, C #. В этой строке кода появляется следующее сообщение об ошибке «Ошибка аутентификации, поскольку удаленная сторона закрыла транспортный поток».

sslStream.AuthenticateAsClient ("gateway.sandbox.push.apple.com", clientCertificateCollection, SslProtocols.Ssl3, false);

Может кто-нибудь PLZ помочь мне в этом.

Заранее спасибо.

Ответы [ 6 ]

2 голосов
/ 18 октября 2014

Недавно я также получил сообщение об ошибке: "Ошибка вызова SSPI. Полученное сообщение было неожиданным или неправильно отформатировано." с внутренним исключением: "Ошибка аутентификации, поскольку удаленная сторона закрыла транспортstream "

Что помогло мне, это немного изменить метод OpenSslStream - TSL в протоколе SSL

старый код:

apnsStream.AuthenticateAsClient(
    this.Host, this.certificates, 
    System.Security.Authentication.SslProtocols.Ssl3, 
    false
);

новый код:

apnsStream.AuthenticateAsClient(
    this.Host, this.certificates, 
    System.Security.Authentication.SslProtocols.Ssl3 | System.Security.Authentication.SslProtocols.Tls,
    false
);

Надеюсь, это кому-нибудь поможет ...

2 голосов
/ 19 июля 2011

Вы можете попробовать изменить X509Certificate на X509Certificate2 и X509CertificateCollection на X509Certificate2Collection.

0 голосов
/ 05 октября 2016

Попробуйте создать сертификат только с закрытым ключом.

0 голосов
/ 28 апреля 2016

Попробуйте следующий код sslStream.AuthenticateAsClient ("gateway.sandbox.push.apple.com", clientCertificateCollection, SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls, false);

0 голосов
/ 27 июля 2015

Я думаю, что проблема здесь в том, что вы конвертировали сертификат из яблока в сертификат при разработке сервера, для этого вы можете использовать следующую команду в openssl:

  • command1: openssl x509 -in "apn_developer_identity.cer"-inform DER -out" apn_developer_identity.pem "-outform PEM
  • command2: openssl pkcs12 -nocerts -in" pushkey1.p12 "-out" pushkey1.pem "-passin pass: yourpass -passout pass: yourpass
  • команда3: openssl pkcs12 -export -inkey "pushkey1.pem" -in "apn_developer_identity.pem" -out "apn_developer_identity.p12" -passin pass: yourpass -passout pass: yourpass
0 голосов
/ 10 января 2011

Лично я использую это:

sslStream.AuthenticateAsClient ("gateway.sandbox.push.apple.com", clientCertificateCollection, SslProtocols.Default, false);

            using (TcpClient client = new TcpClient())
            {


                client.Connect("gateway.sandbox.push.apple.com", 2195);


                using (NetworkStream networkStream = client.GetStream())
                {
                    try
                    {

                        SslStream sslStream = new SslStream(client.GetStream(), false);


                        try
                        {
                            sslStream.AuthenticateAsClient("gateway.sandbox.push.apple.com", "gateway.sandbox.push.apple.com", SslProtocols.Default, false);
                          //building messages
                          sslStream.Write(msg);
                          sslStream.close();
...