7

Azure でホストされているデータ サービスから iPhone に通知を送信していますが、apns との接続を確立しているときに、次のエラーが表示されます。同じエラーについて次のリンクも参照しましたが、それでもエラーが発生します

APNSシャープC#iPhoneプッシュサーバーを使用したAppleプッシュ通知?

        try
        {
            using (TcpClient client = new TcpClient())
            {

                try
                {
                    client.Connect("gateway.sandbox.push.apple.com", 2195);
                    Logging("TSSLProDi :Connected to Apple");
                }
                catch (Exception ex)
                {
                    Logging("TSSLProDi :" + ex.Message + "-IE-" + ex.InnerException);

                }
                using (NetworkStream networkStream = client.GetStream())
                {
                    Logging("TSSLProDi :Client connected.");

                    X509Certificate clientCertificate = new X509Certificate(System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory + @"startup\certname.pfx"), "mycertpassword");
                    X509CertificateCollection clientCertificateCollection = new X509CertificateCollection(new X509Certificate[1] { clientCertificate });

                    // Create an SSL stream that will close the client's stream.
                    SslStream sslStream = new SslStream(
                        client.GetStream(),
                        false,
                        new RemoteCertificateValidationCallback(validateServerCertificate),
                        null
                        );

                    try
                    {
                        sslStream.AuthenticateAsClient("gateway.sandbox.push.apple.com", clientCertificateCollection, System.Security.Authentication.SslProtocols.Default, false);
                        Logging("TSSLProDi :slStreamAuthenticated");
                    }
                    catch (AuthenticationException ex)
                    {
                        Logging("TSSLProDi :" + "Exception: " + ex.Message.ToString());
                        if (ex.InnerException != null)
                        {
                            Logging("Inner exception: " + ex.InnerException.Message.ToString());
                        }
                        Logging("TSSLProDi :" + "Authentication failed - closing the connection.");
                        client.Close();
                        return;
                    }
                }

            }
        }
        catch (Exception ex)
        {

            Logging("TSSLProCert :" + ex.Message + "-IE-" + ex.InnerException);
        }

VMにも必要な証明書をインストールしました。 Apple から取得した iphone developer_identity 証明書に表示される警告の 1 つは、「Windows にはこの証明書を確認するための十分な情報がありません」というもので、私の iPhone 証明書に何か問題があります。助けてください私は立ち往生しています

4

6 に答える 6

6

X509Certificate を X509Certificate2 に、X509CertificateCollection を X509Certificate2Collection に変更したところ、解決策が得られました。

于 2011-07-19T15:39:31.157 に答える
3

これが3年後に役立つかどうかはわかりませんが、iOS8の答えを残します.

Apple はサーバーのセキュリティを変更しました。あなたが言及した行で、SSL から TLS に変更する必要があります。

元のコード:

_apnsStream.AuthenticateAsClient(host,certificates,System.Security.Authentication.SslProtocols.Ssl3, false); 

新しいコード:

_apnsStream.AuthenticateAsClient(host,certificates,System.Security.Authentication.SslProtocols.Tls, false);

この情報が誰かの役に立てば幸いです。

誰かが GIT フォーラムでこれにコメントしました

于 2014-10-14T07:31:30.233 に答える
3

このチュートリアルの手順に従って、開発者証明書から p12 ファイルを作成することをお勧めします。

http://help.adobe.com/en_US/as3/iphone/WS144092a96ffef7cc-371badff126abc17b1f-7fff.html

このファイルを Windows に登録することも重要です。これは、生成後にファイルをダブルクリックするだけの簡単なものです。後で X509Certificate コンストラクターへの呼び出しを更新することを忘れないでください。

このチュートリアルは Windows でも同様に機能しますが、次の場所にある OpenSSL クライアントをダウンロードする必要がある場合があります。

http://gnuwin32.sourceforge.net/packages/openssl.htm .

于 2011-07-18T13:56:20.327 に答える
1

少し遅れましたが、それが誰かに役立つかどうかは誰にもわかりません...証明書で大きな間違いを犯し、Apple Developer Siteからダウンロードした.CERをインストールしました...わかっています...私のせいですが、 '私と同じくらい馬鹿だ :-P

.CER をダウンロードするときは、それをキーチェーンにインポートしてから、.P12 証明書を生成する秘密鍵を含む証明書をエクスポートする必要があります。これは、Windows マシンにインストールする必要がある証明書です。LocalMachine/Personal ストアに .P12 をインストールすると、認証は問題なく機能しました。

于 2012-08-08T10:52:45.543 に答える
1

同じ問題が発生しました。.pfx の代わりに .p12 証明書ファイルを使用し、moon-apns を使用して通知を送信すると、問題は解決しました。

ここで Moon-APNS コードをダウンロードします: https://github.com/arashnorouzi/Moon-APNS

于 2013-01-17T07:12:20.323 に答える
0

これを試して :

SslStream sslStream = new SslStream(client.GetStream(), false);
于 2011-07-18T13:47:41.817 に答える