Abrufen von javax.net.ssl.SSLHandshakeException: Schwerwiegende Warnung erhalten: handshake_failure-Fehler

Ich versuche, eine Push-Benachrichtigung mit Java-PNs an das iPhone zu senden, erhalte jedoch die folgende Fehlermeldung:javax.net.ssl.SSLHandshakeException: Schwerwiegende Warnung erhalten: handshake_failure

Mein Code ist -

String token="95076d2846e8979b46efd1884206a590d99d0f3f6139d947635ac4186cdc5942";
String host = "gateway.sandbox.push.apple.com";
int port = 2195;
String payload = "{\"aps\":{\"alert\":\"Message from Java o_O\"}}";

NotificationTest.verifyKeystore("res/myFile.p12", "password", false);
KeyStore keyStore = KeyStore.getInstance("PKCS12");
keyStore.load(getClass().getResourceAsStream("res/myFile.p12"), "password".toCharArray());

KeyManagerFactory keyMgrFactory = KeyManagerFactory.getInstance("SunX509");
keyMgrFactory.init(keyStore, "password".toCharArray());

SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(keyMgrFactory.getKeyManagers(), null, null);
SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();

SSLSocket sslSocket = (SSLSocket) sslSocketFactory.createSocket(host, port);
String[] cipherSuites = sslSocket.getSupportedCipherSuites();
sslSocket.setEnabledCipherSuites(cipherSuites);
sslSocket.startHandshake();

char[] t = token.toCharArray();
byte[] b = Hex.decodeHex(t);

OutputStream outputstream = sslSocket.getOutputStream();

outputstream.write(0);
outputstream.write(0);
outputstream.write(32);
outputstream.write(b);
outputstream.write(0);
outputstream.write(payload.length());
outputstream.write(payload.getBytes());

outputstream.flush();
outputstream.close();

System.out.println("Message sent .... ");

ZumNotificationTest.verifyKeystore Ich verstehe, dass dies Datei und Keystore ist.

Ich verstehe nicht, warum ich diesen Fehler erhalte.

Kann mir bitte jemand helfen?

Danke im Voraus ...

In meinem Log habe ich das gesehen

** CertificateRequest

Zertifikattypen: RSA, DSS, ECDSA

Zertifizierungsstellen:

[read] MD5- und SHA1-Hashes: len = 10

0000: 0D 00 00 06 03 01 02 40 00 00 ....... @ ..

** ServerHelloDone

[read] MD5- und SHA1-Hashes: len = 4

0000: 0E 00 00 00 ....

** Zertifikatskette

**

** ClientKeyExchange, RSA PreMasterSecret, TLSv1

[Schreiben] MD5- und SHA1-Hashes: len = 269

.

.

.

.

.

main, READ: TLSv1-Warnung, Länge = 2

main, RECV TLSv1 ALERT: fatal, handshake_failure

main, closeSocket () genannt

Haupt-, Bearbeitungsausnahme: javax.net.ssl.SSLHandshakeException: Schwerwiegende Warnung erhalten: handshake_failure

Ich verstehe nicht warumZertifizierungsstellen: ist leer?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage