生成された証明書はリソースフォルダに移動すると機能しなくなります 質問する

生成された証明書はリソースフォルダに移動すると機能しなくなります 質問する

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(ファイルを要求するコードはcom.company.push)でした。私は入力ストリームを次のように要求します。

InputStream stream = this.getClass().getResourceAsStream("certificates/dual.p12");

これは開発時にはうまく動作しますが、プロジェクトをビルドするときには動作しません(Mavenを使用)。そのため、同じパッケージを使用してリソースをリソースフォルダーに移動しました。リソースはまだ見つかりますが、上記のようになります。java.io.IOException

この原因は何なのか知っている人はいますか?

Ps: ファイルを src/main/java のパッケージに戻すと、すべて正常に動作するので、証明書は有効なようです。

ベストアンサー1

これは、Maven のリソース フィルタリングによって p12 ファイルが破損しているために発生します。

これをMavenリソースフィルタリングからp12ファイルを除外することで解決しました。xml ファイルの:

<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>

おすすめ記事