On Fri, 15 Oct 2021 14:12:55 GMT, Magnus Ihse Bursie <i...@openjdk.org> wrote:
>> make/jdk/src/classes/build/tools/generatecacerts/GenerateCacerts.java line >> 74: >> >>> 72: cert = (X509Certificate) cf.generateCertificate(fis); >>> 73: } >>> 74: ks.setCertificateEntry(alias, cert); >> >> In the previous code, we always used a fixed date (cert's notBefore) for the >> creation date. Now, it seems it will be always different and based on when >> it was created. I'm not really sure if this is an issue in practice, but I >> think it is worth thinking about a bit more - do you have any thoughts on >> this? > > If that means the build will become non-reproducible, then *I* certainly have > thoughts about it! ;-) The certificate stored in a PKCS12 file has no date associated. Whenever you load a keystore, the creation time is set to the load time. In fact, the `VerifyCACerts.java` maintains a SHA-256 hash of the keystore and it will not change unless the certs themselves are changed. Here is the actual bytes for one certificate entry inside: 0000:1AD48 [] SEQUENCE 0005:0659 [0] SEQUENCE 0009:000D [00] OID 1.2.840.113549.1.12.10.1.3 (CertBag) 0016:05DB [01] cont [0] 001A:05D7 [010] SEQUENCE 001E:000C [0100] OID 1.2.840.113549.1.9.22.1 (CertTypeX509) 002A:05C7 [0101] cont [0] 002E:05C3 [01010] OCTET STRING (1729119956) 0000: 30 82 05 BB 30 82 03 A3 A0 03 02 01 02 02 08 57 0...0..........W 0010: 0A 11 97 42 C4 E3 CC 30 0D 06 09 2A 86 48 86 F7 ...B...0...*.H.. 0020: 0D 01 01 0B 05 00 30 6B 31 0B 30 09 06 03 55 04 ......0k1.0...U. (1471 bytes) 05F1:006D [02] SET 05F3:0053 [020] SEQUENCE 05F5:000B [0200] OID 1.2.840.113549.1.9.20 (FriendlyName) 0600:0046 [0201] SET 0602:0044 [02010] STRING "actalisauthenticationrootca [jdk]" 0646:0018 [021] SEQUENCE 0648:000E [0210] OID 2.16.840.1.113894.746875.1.1 (ORACLE_TrustedKeyUsage) 0656:0008 [0211] SET 0658:0006 [02110] OID 2.5.29.37.0 (anyExtendedKeyUsage) ------------- PR: https://git.openjdk.java.net/jdk/pull/5948