сб, 20 мар. 2021 г. в 18:24, Emmanuel Bourg <ebo...@apache.org>:
> > 2. The current Windows exe signing process isn't repeatable. There are a
> > few suggestions workarounds at https://reproducible-builds.org/ and I
> > need to discuss these with the provider of the code signing service the
> > ASF uses (DigiCert).
>
> The signature is reproducible but not the timestamp. We'd need something
> like a detached signature shipped with the source package, and a build
> that either append the signature or get a new one from DigiCert.

There are two signed executables: installer and uninstaller,
and uninstaller is packed into the installer executable.

That's why the installer is built twice by build.xml, first to create
an uninstaller so that it could be signed. (IIRC)

A timestamp is an important part of a signature (so that one does not
create a new signature with an expired key).

>
> I got a quick look, I guess you replaced the <jar> tasks with <zip> to
> make the timestamp of the zip entries reproducible? I'm not sure this is
> sufficient, there is no guarantee the order of the entries will be the
> same (this is usually dependent on the filesystem used, I don't think
> Ant sorts the entries).

I have not reviewed the changes, but jar and zip differ in
a) placement of Manifest file (jar spec requires it to be the first
file in the archive IIRC)
b) encoding used for file names (jar uses UTF-8, zip uses platform default)

пн, 22 мар. 2021 г. в 12:44, Mark Thomas <ma...@apache.org>:
>
> No. The Jar entries used the timestamps of the original files. As long
> as the Jar task was configured not to add entries for directories (which
> used the current time as the last modified date) that part was OK. The
> issue was that the manifest was always created with the current time as
> the last modified date.

Those entries for directories are required for some tools to operate
correctly. I think that we already turned them off once and turned
them back on.

(I think it was annotation scanning in some old version of Spring
Framework that was broken by missing directories, but I do not have a
link - just from memory.)

I know that Apache Maven is capable of creating reproducible builds
(by setting an explicit timestamp when building). [1]
Looking at "maven-core-3.3.9.jar" as an example, it has entries for directories,

If the jar task does not do what is needed for us, it is better to ask
Apache Ant project for a fix (so that other projects can benefit from
it as well) rather than replace "jar" with "zip".

[1] https://maven.apache.org/guides/mini/guide-reproducible-builds.html

Best regards,
Konstantin Kolinko

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to