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?