Подписать исполняемый файл launch4j в ant с помощью sign4j и jsign
У меня есть приложение в банке, и я заворачиваю его в exe с launch4j, так что пользователю легко запустить его (в windows). У меня есть сертификат, поэтому я подписываю jar (я не знаю, действительно ли это необходимо, потому что он будет завернут в exe), и я хочу подписать exe, но он повреждает исполняемый файл.
Я использую ant, чтобы сделать весь процесс и выглядеть так:
<signjar jar="${jar.location}" alias="${key.alias}" storetype="pkcs12" keystore="${key.file}" storepass="${key.password}" tsaurl="https://timestamp.geotrust.com/tsa" />
<launch4j configFile="launch4j_configuration.xml" fileversion="${version}.0" txtfileversion="${build}" productversion="${version}.0" txtproductversion="${build}" outfile="${exe.location}" jar="${jar.location}" />
<signexe file="${exe.location}" alias="${key.alias}" storetype="pkcs12" keystore="${key.file}" storepass="${key.password}" tsaurl="http://timestamp.verisign.com/scripts/timstamp.dll" />
Я обнаружил, что это потому, что когда вы подписываете exe, он ломает структуру jar или что-то вроде этого. Но я также видел, что внутри папки launch4j находится папка sign4j, которая содержит то, что я считаю программой, которая решает эту проблему.
Теперь моя проблема заключается в том, как используется эта программа? И как я могу интегрировать его в сценарий ant, чтобы подписать exe?
README.txt-файл в папке мне не помогает. Извините, если это так очевидно, но не ясно для меня. Также обратите внимание, что я использую Ubuntu.
1 ответ:
То, что я нашел, это то, что вы должны выполнить команду sign4j с командой подписания в качестве аргумента. Что-то вроде:
Итак, чтобы интегрировать его в ant, вам нужно создать задачуsign4j jsign -s keyfile.p12 -a "(codesign_1091_es_sw_kpsc)" --storepass AVERYGOODPASSWORD --storetype pkcs12 -n MyProgram -u https://www.example.com MyProgram.exe
exec
. Например, что-то вроде:<exec executable="sign4j"> <arg line="java -jar jsign-1.2.jar -s ${key.file} -a ${key.alias} --storepass ${key.password} --storetype pkcs12 ${exe.location}"/> </exec>
Он также работает с другими инструментами подписи, такими как, например, authenticode от Microsoft...
<exec executable="launch4j/sign4j/sign4j.exe"> <arg line="signtool.exe sign /fd SHA256 /f mycert.pfx /p foobar /t http://timestamp.verisign.com/scripts/timstamp.dll dist\myapp.exe"/> </exec>