Timo Harter created NIFI-14759:
----------------------------------

             Summary: NarUnpacker fails with NAR file signed with JarSigner
                 Key: NIFI-14759
                 URL: https://issues.apache.org/jira/browse/NIFI-14759
             Project: Apache NiFi
          Issue Type: Bug
    Affects Versions: 2.2.0
            Reporter: Timo Harter


A previously working NAR file fails to be unpacked by the NarUnpacker on 
startup after it has been signed with JarSigner (using the 
maven-jarsigner-plugin) plugin. The following error occurs:
{code:java}
java.io.FileNotFoundException: 
work\nar\extensions\test-nar-2.1.1-SNAPSHOT.nar-unpacked\META-INF\MANIFEST.MF 
(Das System kann den angegebenen Pfad nicht finden)
    at java.base/java.io.FileOutputStream.open0(Native Method)
    at java.base/java.io.FileOutputStream.open(FileOutputStream.java:289)
    at java.base/java.io.FileOutputStream.<init>(FileOutputStream.java:230)
    at java.base/java.io.FileOutputStream.<init>(FileOutputStream.java:179)
    at org.apache.nifi.nar.NarUnpacker.makeFile(NarUnpacker.java:599)
    at 
org.apache.nifi.nar.NarUnpacker.unpackIndividualJars(NarUnpacker.java:346)
    at 
org.apache.nifi.nar.NarUnpacker.unpackIndividualJars(NarUnpacker.java:323)
    at org.apache.nifi.nar.NarUnpacker.unpackNar(NarUnpacker.java:296)
    at org.apache.nifi.nar.NarUnpacker.unpackNars(NarUnpacker.java:156)
    at org.apache.nifi.nar.NarUnpacker.unpackNars(NarUnpacker.java:85)
    at org.apache.nifi.nar.NarUnpacker.unpackNars(NarUnpacker.java:80)
    at org.apache.nifi.nar.NarUnpacker.unpackNars(NarUnpacker.java:72)
    at org.apache.nifi.runtime.Application.run(Application.java:70)
    at org.apache.nifi.runtime.Application.run(Application.java:60)
    at org.apache.nifi.NiFi.main(NiFi.java:42) {code}
Some analysis shows that the working NAR file has a zipfile structure (order of 
entries in the file) like this:
{code:java}
META-INF/
META-INF/MANIFEST.MF
META-INF/bundled-dependencies/
META-INF/docs/
META-INF/docs/additional-details/
... {code}
While the NAR file that does not work after signing has an order like this:
{code:java}
META-INF/MANIFEST.MF
META-INF/KEY_5313.SF
META-INF/KEY_5313.RSA
META-INF/
META-INF/DEPENDENCIES
META-INF/LICENSE
META-INF/NOTICE
META-INF/bundled-dependencies/
META-INF/docs/
META-INF/docs/additional-details/
... {code}
Notice how the entry for the "META-INF/" directory comes after the entry for 
"META-INF/MANIFEST.MF". This causes the error in the NarUnpacker code because 
the META-INF output directory has not been created by the time 
META-INF/MANIFEST.MF is being unpacked.

>From my understanding, both these structures are valid zip files and other zip 
>related tools do not seem to have an issue with this ordering.

We fixed this problem for us by unpacking and re-packing the signed NAR file to 
correct the order of entries, but it would be nice if the NarUnpacker class 
could be made more tolerant here.

 

Steps to reproduce:

Add a maven-jarsigner-plugin build step to a NAR project and try to deploy the 
result.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to