Verbindung zu APNS mit Java-APNS nicht möglich

Verbindung zu APNS mit Java-APNS nicht möglich

Ich habe ein Java-Programm auf einem durch eine Firewall geschützten Server laufen, das Push-Benachrichtigungen an meine iPhone-App senden soll, indem es Java-APNS verwendet. Das Problem ist, dass die Bibliothek keine Verbindung zum APNS-Server herstellen kann, wenn ich versuche, eine Benachrichtigung zu senden. Aus dem Stacktrace geht hervor, dass beim Erstellen der erforderlichen SSL-Verbindung die Verbindung an einem bestimmten Punkt abgelehnt wird (eine java.net.ConnectExceptionmit der Detailmeldung „Verbindung abgelehnt“ wird ausgegeben, wenn die Bibliothek SSLSocketFactorydie createSocketMethode aufruft).

Es würde mich nicht im Geringsten überraschen, wenn die Firewall die Verbindung blockiert, aber da ich den Server nicht verwalte, kann ich leider nicht überprüfen, ob das tatsächlich der Fall ist. Die Tatsache, dass das Programm von meinem (nicht durch eine Firewall geschützten) Desktop aus einwandfrei funktioniert, scheint die Theorie zu stützen.

Meine Frage ist, ob jemand eine Methode kennt, mit der ich die Grundursache des Problems finden kann, und/oder ob mir jemand sagen kann, was ich dem Serveradministrator sagen muss, damit alles funktioniert (falls das Problem tatsächlich bei der Firewall liegt)? Meine Kenntnisse in solchen Dingen sind etwas begrenzt, aber es sollte doch so einfach sein wie das Entsperren ausgehender Verbindungen auf Port 2195 (dem von den APNS-Servern verwendeten Port), oder?

Als Referenz: Der Server ist eine Linux-Box und ich verwende Version 0.1.2 von Java-APNS.

Antwort1

Nun, Sie sollten damit beginnen, ihn/sie einfach zu bitten, den ausgehenden Port 2195 freizugeben.

Hier ist ein Beispiel:

iptables -A OUTPUT -o eth0 -p tcp --dport 2195 -j ACCEPT

Das Obige setzt voraus, dass es eth0sich um die externe, zum Internet gerichtete Schnittstelle handelt.

Möglicherweise müssen Sie auch eine Zeile für eingehende Nachrichten hinzufügen (vorausgesetzt, die Quelle ist auch am anderen Ende Port 2195):

iptables -A INPUT -i eth0 -p tcp --sport 2195 -j ACCEPT

Wenn der Quellport für die Rückkommunikation zufällig festgelegt ist, müssen Sie das Statusmodul in iptables verwenden, um die Verbindung zu verfolgen:

iptables -A OUTPUT -o eth0 -p tcp --dport 2195 \ 
         -m state --state NEW, ESTABLISHED, RELATED \
         -j ACCEPT

iptables -A INPUT -i eth0 -p tcp \
         -m state --state ESTABLISHED, RELATED \
         -j ACCEPT

Das ist ganz einfach. Der Administrator ist für solche Dinge verantwortlich, nicht Sie, daher ist wahrscheinlich eine Änderung des oben Gesagten notwendig. HTH.

verwandte Informationen