web-dev-qa-db-ja.com

PushSharp APNS生産:パッケージに提供された資格情報は認識されませんでした(ただし、開発は正常に機能します)

私のアプリはApp Storeで販売できるようになりましたが、実稼働デバイス(App Storeからアプリをインストールしたデバイス)はどれもプッシュ通知を受け取りません。実稼働デバイスにプッシュ通知を送信しようとすると、次のエラーが表示されます。

"The credentials supplied to the package were not recognized" 
(System.ComponentModel.Win32Exception)

この例外は内部的にスローされ、無限ループでキャッチされます。

enter image description here

ApplePushChannel.csファイルの539行目でスローされます。

    try
{
    stream.AuthenticateAsClient(this.appleSettings.Host, this.certificates, 
        System.Security.Authentication.SslProtocols.Ssl3, false);
    //stream.AuthenticateAsClient(this.appleSettings.Host);
}
catch (System.Security.Authentication.AuthenticationException ex)
{
    throw new ConnectionFailureException("SSL Stream Failed to Authenticate as Client", ex);
}

これは、Visual Studio出力でのアプリケーションの出力です。

...
A first chance exception of type 'System.ComponentModel.Win32Exception' occurred in System.dll
A first chance exception of type 'System.ObjectDisposedException' occurred in System.dll
A first chance exception of type 'System.ComponentModel.Win32Exception' occurred in System.dll
A first chance exception of type 'System.ObjectDisposedException' occurred in System.dll
A first chance exception of type 'System.ComponentModel.Win32Exception' occurred in System.dll
A first chance exception of type 'System.ObjectDisposedException' occurred in System.dll
A first chance exception of type 'System.ComponentModel.Win32Exception' occurred in System.dll
A first chance exception of type 'System.ObjectDisposedException' occurred in System.dll
A first chance exception of type 'System.ComponentModel.Win32Exception' occurred in System.dll
...(it keeps getting thrown until I stop it manually)

私が試したものは次のとおりです。

  • 試しているデバイスIDが実稼働デバイストークンに登録されていることを再確認しました。
  • APNS Production証明書を取り消して再生成し、秘密キーとともに新しい.p12ファイルにエクスポートし、新しい証明書で再試行しました。 (開発プッシュ通知でも同じ問題があり、これで問題が解決しました)
  • SSLプロトコルをSsl3からTlsに変更しました。 (数日前にプロトコルバージョンに問題があり、一時的に問題を修正しました。これは必要ではないはずですが、私が得ているエラーは私が以前修正していたものと同じです)
  • 開発サーバー/証明書ではなく、本番証明書で本番サーバーに実際に接続しようとしていることを確認しました。
  • APNSサーバーに直接アクセスできることを確認しました(ASP.NETアプリはParallels VM MacのWindows 8.1内にあります。混乱を避けるため、Macからの出力は次のとおりです。

(端末出力)編集:サンドボックスサーバーにpingを送信しました。本番サーバーにpingを実行しました。これにも接続できることを確認したので、問題ではありません。

can$ Sudo nmap -p 2195 gateway.sandbox.Push.Apple.com
Starting Nmap 6.40-2 ( http://nmap.org ) at 2014-04-28 00:06 EEST
Nmap scan report for gateway.sandbox.Push.Apple.com (17.149.34.189)
Host is up (0.49s latency).
Other addresses for gateway.sandbox.Push.Apple.com (not scanned): 17.149.34.187 17.149.34.188
PORT     STATE SERVICE
2195/tcp open  unknown

PushSharpがAPNSサーバーとネゴシエートしないのはなぜですか?

28
Can Poyrazoğlu

問題を見つけました。証明書を取り消して再生成しましたが、今回は(証明書なしで)秘密鍵のみをエクスポートしました。キーチェーンアクセスでは、.p12としてエクスポートし、新しいファイルを使用して動作しました。何らかの理由で、証明書と秘密キーの両方がファイルに存在する場合、PushSharpは.p12でうまく機能しませんでした。

78
Can Poyrazoğlu

「パッケージに提供された資格情報が認識されませんでした」という例外は、通常、コードを実行しているユーザーに十分な権限がないことを示しています。

Azure Webアプリまたはwebjobからプッシュ通知を送信している場合、ファイルまたはbase64エンコード文字列からAPNS証明書をロードしないでください。 Azure Portalに移動して、代わりに証明書をWebサイトに追加します。 thumb印に注意してください。

certificate in Azure Portal

次に、WEBSITE_LOAD_CERTIFICATES設定を追加し、*(アスタリスク)。

これで、C#コードからAPNS証明書を使用できます。

string thumbprint = "YOUR THUMBPRINT";
var store = new X509Store(StoreName.My, StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadOnly);
var certificate = store.Certificates.Find(
    X509FindType.FindByThumbprint, thumbprint, validOnly: false)
    .Cast<X509Certificate2>().SingleOrDefault();
var apnsConfig = new ApnsConfiguration(
    ApnsConfiguration.ApnsServerEnvironment.Production, certificate);

参照資料

3
Pavel Chuchuva

私は何度も何度もテストされました。

p12ファイルをpem形式にすると、IIS制限されたユーザー、Azureで動作する可能性があります...

1
Moshe L

Windows証明書ストアを使用する場合(本番サーバーで証明書を管理する最も簡単な方法)、秘密キーに正しいアクセス許可を設定してください。

1
Jeroen Visscher

答えはどれも私にとってはうまくいきませんでした。最終的には、証明書と秘密キーをWindows証明書ストアにインポートし、.pfx

1
chedabob

私は同じ例外を受け取っていたので、私の場合はIOS Push Services証明書の許可を追加する必要がありました。

Mmcの証明書を右クリック->すべてのタスク->秘密キーの管理... Webアプリのiisアプリケーションプールがそのアカウントを使用したため、NETWORK SERVICEを追加しました。

詳細については、以下を参照してください: http://blog.falafel.com/Apple-Push-notifications-certificates-and-iis/

0
BIKTOP