Java APNS 证书错误“DerInputStream.getLength():lengthTag=109,太大。”

新手上路,请多包涵

当我尝试使用 java APNS 将推送通知发送到 iOS 时,我收到以下错误消息:

com.notnoop.exceptions.InvalidSSLConfig: java.io.IOException: DerInputStream.getLength(): lengthTag=109,太大。

我已经尝试将证书转换为个人信息交换 (.p12),也出现了同样的错误。任何人都知道问题以及如何解决它?

这是我的java代码:

 ApnsService service =
    APNS.newService()
   .withCert("src/net/notification/ck.jks", "******")
   .withSandboxDestination()
   .build();

String payload = APNS.newPayload().alertBody(record.getSendMsg()).build();
String token = record.getToken();
service.push(token, payload);

谢谢。

原文由 user3479640 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答

我遇到了同样的问题,但只有当您使用 maven 时,我的解决方案才会对您有帮助。

Maven 资源过滤(让您在资源文件中包含变量)会弄乱您的二进制文件——证书对修改特别敏感。

通常,不应过滤二进制内容。但我不能简单地禁用资源过滤,因为我有一些包含变量的 .properties 文件。所以解决方案是 从过滤中排除 .p12 文件

 <build>
    [...]
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
            <excludes>
                <exclude>**/*.p12</exclude>
            </excludes>
        </resource>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>false</filtering>
            <includes>
                <include>**/*.p12</include>
            </includes>
        </resource>
    </resources>
    [...]
</build>

有关 Maven 资源过滤的更多信息: http ://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html

原文由 Zsolt Safrany 发布,翻译遵循 CC BY-SA 3.0 许可协议

发生这种情况是因为系统认为您正在尝试读取不同类型的密钥库而不是 JKS。您需要指定该文件为 JKS 或将其转换为其他格式。

我看到您已经尝试过转换为 .p12。如果你这样做正确,也许还有一些其他的默认格式。我建议改为了解如何指定 JKS。

原文由 user3251514 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题