Я пытаюсь отправить уведомление толчок для iPhone с помощью Java-PNS, но я получаю следующее сообщение об ошибке - javax.net.ssl.SSLHandshakeException: Received со смертельным исходом предупреждение: handshake_failureНачало javax.net.ssl.SSLHandshakeException: Получен фатальное предупреждение: handshake_failure Ошибка
Мой код -
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 .... ");
Для NotificationTest.verifyKeystore Я получаю, что это действует в файле и Keystore.
Я не понимаю, почему я получаю эту ошибку.
Пожалуйста, кто-нибудь может мне помочь?
Спасибо заранее ...
В моем журнале я видел, что
** CertificateRequest
Cert Типы: RSA, DSS, ECDSA
Cert Власти:
[читать] Хеши MD5 и SHA1: len = 10
0000: 0D 00 06 00 03 01 02 40 00 00 ....... @ ..
** ServerHelloDone
[читать] MD5 и SHA1 хеши: Len = 4
0000 : 0E 00 00 00 ....
** цепь Сертификат
**
** ClientKeyExchange, RSA PreMasterSecret, TLSv1
[написать] Хеши MD5 и SHA1: len = 269
.
.
.
.
.
главное, READ: TLSv1 предупреждение, длина = 2
главное, RECV TLSv1 ТРЕВОГА: со смертельным исходом, handshake_failure
главное, называется closeSocket()
главное, обработка исключений: javax.net. ssl.SSLHandshakeException: Получен фатальное предупреждение: handshake_failure
Я не понимая, почему Cert власти: пуст?
Можете ли вы опубликовать полную статистику стека? – atk