2011-01-07 3 views
2

Ich versuche, die Benachrichtigung auf dem iPhone mit asp.net, C# zu pushen. Ich erhalte den folgenden Fehler: "Authentifizierung fehlgeschlagen, da die Gegenstelle den Transportstrom geschlossen hat" in dieser Codezeile.APNS SSlStream Authentifizierung fehlgeschlagen, da die Remote-Partei den Transportstream geschlossen hat

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

kann mir jemand plz helfen mir dabei.

Vielen Dank im Voraus.

Antwort

0

persönlich verwende ich dieses:

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(); 
+1

Danke malinois. Ich habe Ihre Codezeile überprüft, aber es wird derselbe Fehler zurückgegeben. Kannst du den Code und die Schritte, die für diesen APNS zu tun sind, mit C# posten? Danke im Voraus.Ihre Hilfe wird sehr geschätzt. – Kodee

2

Sie durch Ändern X509Certificate zu X509Certificate2 und X509CertificateCollection zu X509Certificate2Collection versuchen.

2

Kürzlich habe ich auch Fehler erhalten: "Ein Anruf an SSPI fehlgeschlagen. Die Nachricht wurde unerwartet oder falsch formatiert." mit interner Ausnahme: „Authentifizierung fehlgeschlagen, da die anderen Teilnehmer den Transportstrom geschlossen haben“

Was ich eine wenig OpenSslStream Methode geholfen ist zu ändern - TSL in SSL-Protokoll

alter Code:

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

neuen Code:

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

Hoffentlich wird es helfen, jemand ...

+0

Hatte das gleiche Problem. In meinem Fall nur nach dem Anwenden beider Lösungen X509Certificate -> X509Certificate2, X509CertificateCollection zu X509Certificate2Collection und Hinzufügen von SslProtocols.Tls Flag das Problem behoben. Daher sind beide Antworten korrekt und beide sind erforderlich, um das Thema zu lösen – Madman

0

denke ich Problem hier ist, Sie Zertifikat von Apple Zertifikat auf dem Server Entwicklung umwandeln, könnten Sie folgenden Befehl in OpenSSL verwenden, das zu tun:

  • command1 : openssl x509 -in "apn_developer_identity.cer" -Informiere DER -out "apn_developer_identity.pem" -outform PEM
  • command2: openssl pkcs12 -nocerts -in "pushkey1.p12" -out "pushkey1.pem" -passin pass: yourpass-passout pass: deinpass
  • command3: openssl pkcs12 -export -inkey "pushkey1.pem" -in "apn_developer_identity.pem" -out "apn_developer_identity.p12" -passin passieren: yourpass -passout passieren: yourpass
0

den Code unten Versuchen sslStream.AuthenticateAsClient ("gateway.sandbox.push.apple.com", clientCertificateCollection, SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls, false);

0

Versuchen Sie, das Zertifikat nur mit dem privaten Schlüssel zu erstellen.