Какой правильный формат для сертификата Java APNS?
Я использую Java APNS (com.notnoop.apns, v0.2.3) для отправки Push-уведомлений в мое приложение iOS. Я создаю сервис APNS со следующими строками:
private ApnsService createApnsService() throws IOException {
ApnsServiceBuilder serviceBuilder = APNS.newService().withCert(certResource.getInputStream(), certPassword);
serviceBuilder.withSandboxDestination();
return serviceBuilder.build();
}
И получите следующее исключение:
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is com.notnoop.exceptions.NetworkIOException: javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure\n\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:948)\n\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:838)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:647)\n\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:728)\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)... <<...the stacktrace is much longer, but I've cut it of here, since nobody would read it anyway...>>
Я предполагаю, что мой сертификат P12 неверен. (Я также уже пробовал сертификат PEM.) На данный момент я создал сертификат P12 таким образом, а затем применил пароль:
Как правильно создать сертификат, совместимый с Java APNS?
2 ответа
Я создал его согласно этому уроку ранее в этом году, и он работал отлично.
Сначала следуйте этому: http://raywenderlich.com/32960
Затем возьмите созданный.pem, а затем выполните преобразование в соответствии с инструкциями здесь http://code.google.com/p/apns-sharp/wiki/HowToCreatePKCS12Certificate
Я использую PKCS#12 (файл.p12). Для его создания я делаю:
Экспортируйте закрытый ключ из брелка и назовите его
aps_private-key.p12
,Преобразовать ключ с помощью следующей команды
openssl pkcs12 -nocerts -out aps_private-key.pem -in aps_private-key.p12
, убедитесь, что вводите PEM пароль не менее 4 символов.Загрузите сертификат приложения с https://developer.apple.com/account/ios/identifiers/bundle/bundleList.action. Загруженный файл должен называться как-то так
aps_development.cer
,Преобразуйте сертификат с помощью следующей команды
openssl x509 -in aps_development.cer -inform der -out aps_development.pem
Генерация учетных данных с использованием
openssl pkcs12 -export -in aps_development.pem -out aps_dev_credentials.p12 -inkey aps_private-key.pem
,И я готов использовать учетные данные, сгенерированные на шаге 5 (
aps_dev_credentials.p12
).final InputStream certificate = Thread.currentThread().getContextClassLoader() .getResourceAsStream("aps_dev_credentials.p12"); final char[] passwd = {'1','2','3','4'}; final ApnsService apnsService = com.notnoop.apns.APNS.newService() .withCert(certificate, new String(passwd)) .withSandboxDestination().build(); apnsService.testConnection();