Pushshsharp APNS production: les références fournies à l'emballage n'ont pas été reconnues (les travaux de développement bien que)

mon application vient d'être mise en vente sur App Store, mais aucun de mes appareils de production (les appareils qui ont installé L'application depuis App Store) ne reçoit de notification push. Lorsque j'essaie d'envoyer une notification push à une production de l'appareil, j'obtiens cette erreur:

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

cette exception est lancée en interne et prise dans une boucle infinie:

enter image description here

il est lancé sur la ligne 539 de ApplePushChannel.cs fichier:

    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);
}

Ceci est la sortie de L'application en sortie 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)

Ici sont les choses que j'ai essayé:

  • J'ai vérifié que l'ID de périphérique que j'essaie est enregistré avec un jeton de périphérique de production.
  • a révoqué et régénéré le certificat de Production APNS, l'a exporté avec la clé privée vers un nouveau .p12 fichier, et essayé à nouveau avec le nouveau certificat. (J'ai eu le même problème avec les notifications push de développement, et cela a résolu mon problème)
  • a changé le protocole SSL de Ssl3Tls. (il y a quelques jours il y avait un problème avec la version de protocole, et il a corrigé un problème temporairement. Il ne devrait pas être nécessaire pour cela, mais l'erreur que je reçois est la même que celle que je recevais avant que cela corrigé)
  • vérifié que je suis en train d'essayer de me connecter au serveur de production avec le certificat de production au lieu du serveur/certificat de développement.
  • vérifié que je peux accéder le serveur APNS directement (mon ASP.NET l'application vit à L'intérieur D'une VM Windows 8.1 de Parallels sur mon Mac, voici la sortie de mon Mac, juste pour éviter toute confusion:

(sortie du Terminal) Edit: j'ai pingé le serveur de bac à sable, j'ai pingé le serveur de production, je vérifie que je peux me connecter à lui aussi, donc ce n'est pas le problème.

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

pourquoi PushSharp ne négocierait-il pas avec les serveurs APNS?

25
demandé sur Can Poyrazoğlu 2014-04-28 01:10:45

6 réponses

j'ai trouvé le problème. J'ai révoqué et régénéré le certificat à nouveau, et cette fois j'ai seulement exporté la clé privée (sans le certificat). Dans le Trousseau d'accès, j'ai exporté en tant que .p12 et utilisé le nouveau fichier et ça a fonctionné. Pour une raison quelconque, PushSharp n'était pas bien jouer avec .p12 lorsque le certificat et la clé privée sont présentes dans le fichier.

69
répondu Can Poyrazoğlu 2016-01-22 17:58:59

"les informations d'identification fournies au paquet n'ont pas été reconnues" exception indique habituellement que l'utilisateur exécutant le code n'a pas assez de permissions.

si vous envoyez des notifications push depuis Azure Web app ou webjob, ne chargez pas le certificat APNS à partir d'un fichier ou d'une chaîne encodée base64. Allez sur Azure Portal et ajoutez le certificat sur le site web à la place. Remarque l'empreinte.

certificate in Azure Portal

suivant Ajouter WEBSITE_LOAD_CERTIFICATES setting and set it to * (astérisque).

maintenant le certificat APNS peut être utilisé à partir du code C#:

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);

Références

2
répondu Pavel Chuchuva 2016-07-19 01:31:24

Aucune réponse n'a fonctionné pour moi. En fin de Compte, ce que j'ai fini par faire est d'importer le Cert et la clé privée dans le magasin Windows cert, puis d'exporter comme un .pfx.

1
répondu chedabob 2017-02-15 11:07:54

j'ai testé encore et encore.

convertissez le p12 le fichier pem format, et il fonctionnera avec IIS utilisateurs limités et peut-être avec Azure....

1
répondu Moshe L 2017-02-22 10:08:10

je recevais la même exception et dans mon cas, j'ai dû ajouter la permission pour mon certificat iOS Push Services.

clic droit sur le certificat dans mmc -> toutes les tâches -> gérer les clés privées... J'ai ajouté le service réseau parce que le pool d'applications iis de mon application web utilisait ce compte.

Voir pour plus de détails: http://blog.falafel.com/apple-push-notifications-certificates-and-iis/

0
répondu BIKTOP 2016-01-27 10:38:52

lorsque vous utilisez windows certificate store, (imho la façon la plus facile de gérer les certificats sur un serveur de production), assurez-vous de définir les permissions correctes sur la clé privée.

-1
répondu Jeroen Visscher 2016-01-22 07:52:29