我在生成用于连接苹果推送服务的证书时遇到问题。当生成的 p12 文件位于我的 src/main/java 文件夹中时,一切正常,但我将其移至 src/main/resources 并决定停止使用以下错误:
DerInputStream.getLength(): lengthTag=111, too big.
了解更多细节:我正在使用 notnoop 推送通知库,并按照 Ray Wenderlich 的教程生成证书。之后,我习惯使用以下命令来生成用于 java 的 p12 文件:
openssl x509 -in aps_development.cer -inform DER -out aps_development.pem -outform PEM
openssl pkcs12 -nocerts -in single.p12 -out single.pem
openssl pkcs12 -export -inkey single.pem -in aps_development.pem -out dual.p12
之后,我将 dual.p12 移到了我的 java 项目中。起初,该文件位于我的 /src/main/java 文件夹中,假设为 at com.company.push.certificates
(而请求该文件的代码位于com.company.push
)。我通过使用请求输入流
InputStream stream = this.getClass().getResourceAsStream("certificates/dual.p12");
这在开发中工作正常,但在构建项目时(使用 maven)却不行,这就是为什么我使用完全相同的包将资源移动到资源文件夹的原因。资源仍然被找到,但现在我得到了上面提到的java.io.IOException
有谁知道这可能是什么原因造成的?
Ps:当我将文件移回 src/main/java 中的包时,一切正常,所以证书似乎是有效的。