Java APNS (Apple Push Notification Service) ошибка - PullRequest
6 голосов
/ 05 декабря 2011

Я пытаюсь использовать Java APNS - проект с открытым исходным кодом - для отправки push-уведомлений на iPhone. Я получаю ошибку, хотя.

Я использовал файл .pem в качестве сертификата. Это должен был быть файл .p12? Я не уверен, в чем разница, но я где-то читал в Интернете, что есть разница между этими форматами файлов.

Вот код:

   ApnsService service =
        APNS.newService()
            .withCert("gpk.pem", "XXXX")
            .withSandboxDestination()
            .build();


    String payload = APNS.newPayload().alertBody("Can't be simpler than this!").build();
    String token = "theTokenIsRemoveHere";
    service.push(token, payload);

А вот и ошибка:

Exception in thread "main" com.notnoop.exceptions.InvalidSSLConfig: java.io.IOException: toDerInputStream rejects tag type 45
    at com.notnoop.apns.internal.Utilities.newSSLContext(Utilities.java:102)
    at com.notnoop.apns.ApnsServiceBuilder.withCert(ApnsServiceBuilder.java:161)
    at com.notnoop.apns.ApnsServiceBuilder.withCert(ApnsServiceBuilder.java:124)
    at com.geomobsters.cli.ApnsClient.main(ApnsClient.java:12)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
Caused by: java.io.IOException: toDerInputStream rejects tag type 45
    at sun.security.util.DerValue.toDerInputStream(DerValue.java:806)
    at com.sun.net.ssl.internal.pkcs12.PKCS12KeyStore.engineLoad(PKCS12KeyStore.java:1201)
    at java.security.KeyStore.load(KeyStore.java:1185)
    at com.notnoop.apns.internal.Utilities.newSSLContext(Utilities.java:87)
    ... 8 more

1 Ответ

10 голосов
/ 05 декабря 2011

Java APNS ожидает сертификат как файл .p12.

Вы должны проверить как приватный ключ, так и сертификат в вашей цепочке для ключей. затем щелкните правой кнопкой мыши -> «экспортировать 2 файла» и экспортировать их Вы должны дать ему пароль, этот пароль вы должны ввести здесь

.withCert("gpk.pem", "XXXX")

как ваш XXXX

удачи

EDIT:

.P12 - PKCS # 12, содержит сертификаты, закрытые ключи, сохраненные с паролем .PEM - это сертификат в кодировке Base64, заблокированный „-----BEGIN CERTIFICATE-----“ and „-----END CERTIFICATE-----“

...