什么';Java APNS证书的正确格式是什么?
我正在使用Java APNS(com.notnoop.APNS,v0.2.3)向我的iOS应用程序发送推送通知。我正在使用以下行创建APNS服务:什么';Java APNS证书的正确格式是什么?,java,ios,macos,apple-push-notifications,javaapns,Java,Ios,Macos,Apple Push Notifications,Javaapns,我正在使用Java APNS(com.notnoop.APNS,v0.2.3)向我的iOS应用程序发送推送通知。我正在使用以下行创建APNS服务: private ApnsService createApnsService() throws IOException { ApnsServiceBuilder serviceBuilder = APNS.newService().withCert(certResource.getInputStream(), certPassword)
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...>>
org.springframework.web.util.NestedServletException:请求处理失败;嵌套异常为com.notnoop.exceptions.NetworkIOException:javax.net.ssl.SSLHandshakeException:收到致命警报:握手失败\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) 今年早些时候,我根据本教程创建了它,它工作得非常好
首先,请遵循以下原则:
然后获取创建的.pem,然后按照此处的说明进行转换我使用PKCS#12(一个.p12文件)。要创建它,我需要:
从密钥链导出私钥并将其命名为aps\u private-key.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();
openssl pkcs12-nocerts-out aps_private-key.pem-在aps_private-key.p12中,确保输入至少4个字符的pem密码短语
aps\u development.cer
opensslx509-in-aps\u development.cer-notify der-out-aps\u development.pem
openssl pkcs12-export-in-aps\u development.pem-out-aps\u dev\u credentials.p12-inkey-aps\u private-key.pem
生成凭据aps\u dev\u credentials.p12
)
今年早些时候,我根据本教程创建了它,它工作得非常好。使用Java APN还是教程中提到的PHP?因为在本教程中,他们使用的是PEM证书,由于Java APN的文档,您应该使用P12证书。创建了PEM,然后进行转换,按照这里的说明,我使用了Java APN和基于PHP的证书solutions@JohnWoods谢谢你的链接。您的PKCS12证书解决方案有效。当你创建这个答案时,我会将它标记为正确答案。