Apple プッシュ サービスへの接続に使用している、生成された証明書に問題があります。生成された 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 フォルダーにありましたcom.company.push.certificates
(ファイルを要求するコードは at ですcom.company.push
)。を使用して入力ストリームを要求します
InputStream stream = this.getClass().getResourceAsStream("certificates/dual.p12");
これは開発中は正常に機能しますが、(maven を使用して) プロジェクトをビルドするときは機能しません。そのため、まったく同じパッケージを使用して、リソースを resources フォルダーに移動しました。リソースは引き続き見つかりますが、上記のようになりましたjava.io.IOException
誰がこれを引き起こしているのか知っていますか?
Ps: ファイルを src/main/java のパッケージに戻すと、すべて正常に動作するので、証明書は有効であるように見えます。