gpt4 book ai didi

java - Java APNS 证书的正确格式是什么?

转载 作者:可可西里 更新时间:2023-11-01 05:01:15 29 4
gpt4 key购买 nike

我正在使用 Java APNS(com.notnoop.apns,v0.2.3)将推送通知发送到我的 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 证书,然后应用了密码:

Screenshot of Keychain.app


创建与 Java APNS 兼容的证书的正确方法是什么?

最佳答案

我使用 PKCS#12(一个 .p12 文件)。为了创建它,我这样做:

  1. 从钥匙串(keychain)中导出私钥并将其命名为aps_private-key.p12

  2. 使用以下命令转换 key openssl pkcs12 -nocerts -out aps_private-key.pem -in aps_private-key.p12,确保输入至少 4 个字符的 PEM 密码短语。

  3. https://developer.apple.com/account/ios/identifiers/bundle/bundleList.action下载app证书.下载的文件的名称应类似于 aps_development.cer

  4. 使用以下命令转换证书 openssl x509 -in aps_development.cer -inform der -out aps_development.pem

  5. 使用 openssl pkcs12 -export -in aps_development.pem -out aps_dev_credentials.p12 -inkey aps_private-key.pem 生成凭据。

  6. 我已准备好使用第 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();

关于java - Java APNS 证书的正确格式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20077626/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com