diff --git a/.gitignore b/.gitignore index 27854a0..f3e363a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,2 @@ -SOURCES/shenandoah-jdk11-shenandoah-jdk-11.0.4+11.tar.xz +SOURCES/shenandoah-jdk11-shenandoah-jdk-11.0.5+10.tar.xz SOURCES/systemtap_3.2_tapsets_hg-icedtea8-9d464368e06d.tar.xz diff --git a/.java-11-openjdk.metadata b/.java-11-openjdk.metadata index c8ec3c7..f6d771b 100644 --- a/.java-11-openjdk.metadata +++ b/.java-11-openjdk.metadata @@ -1,2 +1,2 @@ -dcc5e78329858f75342094efdccce1e87d9cb1d9 SOURCES/shenandoah-jdk11-shenandoah-jdk-11.0.4+11.tar.xz +1e1a7b4b1df7be1b70de37f84ccb0ded61c7e9ea SOURCES/shenandoah-jdk11-shenandoah-jdk-11.0.5+10.tar.xz cd8bf91753b9eb1401cfc529e78517105fc66011 SOURCES/systemtap_3.2_tapsets_hg-icedtea8-9d464368e06d.tar.xz diff --git a/SOURCES/jdk8230923-fips_mode_initialisation_failure.patch b/SOURCES/jdk8230923-fips_mode_initialisation_failure.patch new file mode 100644 index 0000000..8a9040e --- /dev/null +++ b/SOURCES/jdk8230923-fips_mode_initialisation_failure.patch @@ -0,0 +1,208 @@ +# HG changeset patch +# User mbalao +# Date 1568305840 10800 +# Thu Sep 12 13:30:40 2019 -0300 +# Node ID b0436c181872b567c5b8906051fc8836c860541c +# Parent 6d947fcb3ea40ca9d40804db2c8c384f4679e10e +8230923: SunJSSE is not properly initialized in FIPS mode from a configuration file +Reviewed-by: andrew + +diff --git a/src/java.base/share/classes/sun/security/jca/ProviderConfig.java b/src/java.base/share/classes/sun/security/jca/ProviderConfig.java +--- a/src/java.base/share/classes/sun/security/jca/ProviderConfig.java ++++ b/src/java.base/share/classes/sun/security/jca/ProviderConfig.java +@@ -179,7 +179,11 @@ + } else if (provName.equals("SunJCE") || provName.equals("com.sun.crypto.provider.SunJCE")) { + p = new com.sun.crypto.provider.SunJCE(); + } else if (provName.equals("SunJSSE") || provName.equals("com.sun.net.ssl.internal.ssl.Provider")) { +- p = new com.sun.net.ssl.internal.ssl.Provider(); ++ if (hasArgument()) { ++ p = new com.sun.net.ssl.internal.ssl.Provider(argument); ++ } else { ++ p = new com.sun.net.ssl.internal.ssl.Provider(); ++ } + } else if (provName.equals("Apple") || provName.equals("apple.security.AppleProvider")) { + // need to use reflection since this class only exists on MacOsx + p = AccessController.doPrivileged(new PrivilegedAction() { +diff --git a/test/jdk/sun/security/pkcs11/fips/SunJSSEFIPSInit.java b/test/jdk/sun/security/pkcs11/fips/SunJSSEFIPSInit.java +new file mode 100644 +--- /dev/null ++++ b/test/jdk/sun/security/pkcs11/fips/SunJSSEFIPSInit.java +@@ -0,0 +1,131 @@ ++/* ++ * Copyright (c) 2019, Red Hat, Inc. ++ * ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 only, as ++ * published by the Free Software Foundation. ++ * ++ * This code is distributed in the hope that it will be useful, but WITHOUT ++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++ * version 2 for more details (a copy is included in the LICENSE file that ++ * accompanied this code). ++ * ++ * You should have received a copy of the GNU General Public License version ++ * 2 along with this work; if not, write to the Free Software Foundation, ++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. ++ * ++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA ++ * or visit www.oracle.com if you need additional information or have any ++ * questions. ++ */ ++ ++/* ++ * @test ++ * @bug 8230923 ++ * @requires (jdk.version.major == 11) & (os.family == "linux") & (os.arch == "amd64" | os.arch == "x86_64") ++ * @modules java.base/com.sun.net.ssl.internal.ssl ++ * @library /test/lib ++ * @run main/othervm/timeout=30 SunJSSEFIPSInit ++ * @author Martin Balao (mbalao@redhat.com) ++ */ ++ ++import java.io.File; ++import java.io.FileOutputStream; ++import java.io.IOException; ++import java.nio.file.FileVisitResult; ++import java.nio.file.Files; ++import java.nio.file.Path; ++import java.nio.file.SimpleFileVisitor; ++import java.nio.file.attribute.BasicFileAttributes; ++import java.security.Security; ++import java.util.ArrayList; ++import java.util.List; ++ ++import jdk.test.lib.process.OutputAnalyzer; ++import jdk.test.lib.process.ProcessTools; ++ ++public class SunJSSEFIPSInit { ++ private static String lineSep = System.lineSeparator(); ++ private static String javaBinPath = System.getProperty("java.home", ".") + ++ File.separator + "bin" + File.separator + "java"; ++ private static String nssConfigFileName = "nss.cfg"; ++ private static String javaSecConfigFileName = "java.security"; ++ private static Path tmpDirPath; ++ public static void main(String[] args) throws Throwable { ++ tmpDirPath = Files.createTempDirectory("tmpdir"); ++ try { ++ deployConfigFiles(); ++ List cmds = new ArrayList<>(); ++ cmds.add(javaBinPath); ++ cmds.add("-cp"); ++ cmds.add(System.getProperty("test.classes", ".")); ++ cmds.add("-Djava.security.properties=" + tmpDirPath + ++ File.separator + javaSecConfigFileName); ++ cmds.add(SunJSSEFIPSInitClient.class.getName()); ++ OutputAnalyzer out = ProcessTools.executeCommand( ++ cmds.toArray(new String[cmds.size()])); ++ out.stdoutShouldContain("SunJSSE.isFIPS(): true"); ++ System.out.println("TEST PASS - OK"); ++ } finally { ++ deleteDir(tmpDirPath); ++ } ++ } ++ ++ private static void deployConfigFiles() throws IOException { ++ deployJavaSecurityFile(); ++ deployNssConfigFile(); ++ } ++ ++ private static void deployJavaSecurityFile() throws IOException { ++ int numberOfProviders = Security.getProviders().length; ++ StringBuilder sb = new StringBuilder(); ++ sb.append("security.provider.1=SunPKCS11 " + tmpDirPath + ++ File.separator + nssConfigFileName + lineSep); ++ sb.append("security.provider.2=com.sun.net.ssl.internal.ssl.Provider" + ++ " SunPKCS11-NSS" + lineSep); ++ for (int i = 3; i <= numberOfProviders; i++) { ++ sb.append("security.provider." + i + "=\"\"" + lineSep); ++ } ++ writeFile(javaSecConfigFileName, sb.toString()); ++ } ++ ++ private static void deployNssConfigFile() throws IOException { ++ StringBuilder sb = new StringBuilder(); ++ sb.append("name = NSS" + lineSep); ++ sb.append("nssLibraryDirectory = /usr/lib64" + lineSep); ++ sb.append("nssDbMode = noDb" + lineSep); ++ sb.append("nssModule = crypto" + lineSep); ++ writeFile(nssConfigFileName, sb.toString()); ++ } ++ ++ private static void writeFile(String fileName, String fileContent) ++ throws IOException { ++ try (FileOutputStream fos = new FileOutputStream(new File(tmpDirPath + ++ File.separator + fileName))) { ++ fos.write(fileContent.getBytes()); ++ } ++ } ++ ++ private static void deleteDir(Path directory) throws IOException { ++ Files.walkFileTree(directory, new SimpleFileVisitor() { ++ ++ @Override ++ public FileVisitResult visitFile(Path file, ++ BasicFileAttributes attrs) throws IOException { ++ Files.delete(file); ++ return FileVisitResult.CONTINUE; ++ } ++ ++ @Override ++ public FileVisitResult postVisitDirectory(Path dir, IOException exc) ++ throws IOException { ++ Files.delete(dir); ++ return FileVisitResult.CONTINUE; ++ } ++ }); ++ } ++} ++ +diff --git a/test/jdk/sun/security/pkcs11/fips/SunJSSEFIPSInitClient.java b/test/jdk/sun/security/pkcs11/fips/SunJSSEFIPSInitClient.java +new file mode 100644 +--- /dev/null ++++ b/test/jdk/sun/security/pkcs11/fips/SunJSSEFIPSInitClient.java +@@ -0,0 +1,42 @@ ++/* ++ * Copyright (c) 2019, Red Hat, Inc. ++ * ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 only, as ++ * published by the Free Software Foundation. ++ * ++ * This code is distributed in the hope that it will be useful, but WITHOUT ++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++ * version 2 for more details (a copy is included in the LICENSE file that ++ * accompanied this code). ++ * ++ * You should have received a copy of the GNU General Public License version ++ * 2 along with this work; if not, write to the Free Software Foundation, ++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. ++ * ++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA ++ * or visit www.oracle.com if you need additional information or have any ++ * questions. ++ */ ++ ++import java.security.Provider; ++import java.security.Security; ++ ++public class SunJSSEFIPSInitClient { ++ public static void main(String[] args) throws Exception { ++ boolean isSunJSSEFIPS = false; ++ Provider[] provs = Security.getProviders(); ++ for (Provider p : provs) { ++ if (p.getName().equals("SunJSSE") && ++ p instanceof com.sun.net.ssl.internal.ssl.Provider) { ++ isSunJSSEFIPS = ((com.sun.net.ssl.internal.ssl.Provider)p).isFIPS(); ++ break; ++ } ++ } ++ System.out.println("SunJSSE.isFIPS(): " + isSunJSSEFIPS); ++ } ++} ++ diff --git a/SOURCES/nss.fips.cfg.in b/SOURCES/nss.fips.cfg.in new file mode 100644 index 0000000..ead27be --- /dev/null +++ b/SOURCES/nss.fips.cfg.in @@ -0,0 +1,6 @@ +name = NSS-FIPS +nssLibraryDirectory = @NSS_LIBDIR@ +nssSecmodDirectory = @NSS_SECMOD@ +nssDbMode = readOnly +nssModule = fips + diff --git a/SOURCES/rh1022017-reduce_ssl_curves.patch b/SOURCES/rh1022017-reduce_ssl_curves.patch deleted file mode 100644 index 6dab416..0000000 --- a/SOURCES/rh1022017-reduce_ssl_curves.patch +++ /dev/null @@ -1,66 +0,0 @@ -diff --git openjdk.orig///src/java.base/share/classes/sun/security/ssl/SupportedGroupsExtension.java openjdk///src/java.base/share/classes/sun/security/ssl/SupportedGroupsExtension.java ---- openjdk.orig///src/java.base/share/classes/sun/security/ssl/SupportedGroupsExtension.java -+++ openjdk///src/java.base/share/classes/sun/security/ssl/SupportedGroupsExtension.java -@@ -515,50 +515,19 @@ - } - } else { // default groups - NamedGroup[] groups; -- if (requireFips) { -- groups = new NamedGroup[] { -- // only NIST curves in FIPS mode -- NamedGroup.SECP256_R1, -- NamedGroup.SECP384_R1, -- NamedGroup.SECP521_R1, -- NamedGroup.SECT283_K1, -- NamedGroup.SECT283_R1, -- NamedGroup.SECT409_K1, -- NamedGroup.SECT409_R1, -- NamedGroup.SECT571_K1, -- NamedGroup.SECT571_R1, -+ groups = new NamedGroup[] { -+ // only NIST curves in FIPS mode -+ NamedGroup.SECP256_R1, -+ NamedGroup.SECP384_R1, -+ NamedGroup.SECP521_R1, - -- // FFDHE 2048 -- NamedGroup.FFDHE_2048, -- NamedGroup.FFDHE_3072, -- NamedGroup.FFDHE_4096, -- NamedGroup.FFDHE_6144, -- NamedGroup.FFDHE_8192, -- }; -- } else { -- groups = new NamedGroup[] { -- // NIST curves first -- NamedGroup.SECP256_R1, -- NamedGroup.SECP384_R1, -- NamedGroup.SECP521_R1, -- NamedGroup.SECT283_K1, -- NamedGroup.SECT283_R1, -- NamedGroup.SECT409_K1, -- NamedGroup.SECT409_R1, -- NamedGroup.SECT571_K1, -- NamedGroup.SECT571_R1, -- -- // non-NIST curves -- NamedGroup.SECP256_K1, -- -- // FFDHE 2048 -- NamedGroup.FFDHE_2048, -- NamedGroup.FFDHE_3072, -- NamedGroup.FFDHE_4096, -- NamedGroup.FFDHE_6144, -- NamedGroup.FFDHE_8192, -- }; -- } -+ // FFDHE 2048 -+ NamedGroup.FFDHE_2048, -+ NamedGroup.FFDHE_3072, -+ NamedGroup.FFDHE_4096, -+ NamedGroup.FFDHE_6144, -+ NamedGroup.FFDHE_8192, -+ }; - - groupList = new ArrayList<>(groups.length); - for (NamedGroup group : groups) { diff --git a/SOURCES/rh1655466-global_crypto_and_fips.patch b/SOURCES/rh1655466-global_crypto_and_fips.patch new file mode 100644 index 0000000..1c67c83 --- /dev/null +++ b/SOURCES/rh1655466-global_crypto_and_fips.patch @@ -0,0 +1,205 @@ +diff --git a/src/java.base/share/classes/javopenjdk.orig///security/Security.java openjdk///src/java.base/share/classes/java/security/Security.java +--- openjdk.orig///src/java.base/share/classes/java/security/Security.java ++++ openjdk///src/java.base/share/classes/java/security/Security.java +@@ -196,26 +196,8 @@ + if (disableSystemProps == null && + "true".equalsIgnoreCase(props.getProperty + ("security.useSystemPropertiesFile"))) { +- +- // now load the system file, if it exists, so its values +- // will win if they conflict with the earlier values +- try (BufferedInputStream bis = +- new BufferedInputStream(new FileInputStream(SYSTEM_PROPERTIES))) { +- props.load(bis); ++ if (SystemConfigurator.configure(props)) { + loadedProps = true; +- +- if (sdebug != null) { +- sdebug.println("reading system security properties file " + +- SYSTEM_PROPERTIES); +- sdebug.println(props.toString()); +- } +- } catch (IOException e) { +- if (sdebug != null) { +- sdebug.println +- ("unable to load security properties from " + +- SYSTEM_PROPERTIES); +- e.printStackTrace(); +- } + } + } + +diff --git a/src/java.base/share/classes/javopenjdk.orig///security/SystemConfigurator.java openjdk///src/java.base/share/classes/java/security/SystemConfigurator.java +new file mode 100644 +--- /dev/null ++++ openjdk///src/java.base/share/classes/java/security/SystemConfigurator.java +@@ -0,0 +1,151 @@ ++/* ++ * Copyright (c) 2019, Red Hat, Inc. ++ * ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 only, as ++ * published by the Free Software Foundation. ++ * ++ * This code is distributed in the hope that it will be useful, but WITHOUT ++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++ * version 2 for more details (a copy is included in the LICENSE file that ++ * accompanied this code). ++ * ++ * You should have received a copy of the GNU General Public License version ++ * 2 along with this work; if not, write to the Free Software Foundation, ++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. ++ * ++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA ++ * or visit www.oracle.com if you need additional information or have any ++ * questions. ++ */ ++ ++package java.security; ++ ++import java.io.BufferedInputStream; ++import java.io.FileInputStream; ++import java.io.IOException; ++ ++import java.nio.file.Files; ++import java.nio.file.Path; ++ ++import java.util.Iterator; ++import java.util.Map.Entry; ++import java.util.Properties; ++import java.util.function.Consumer; ++import java.util.regex.Matcher; ++import java.util.regex.Pattern; ++ ++import sun.security.util.Debug; ++ ++/** ++ * Internal class to align OpenJDK with global crypto-policies. ++ * Called from java.security.Security class initialization, ++ * during startup. ++ * ++ */ ++ ++class SystemConfigurator { ++ ++ private static final Debug sdebug = ++ Debug.getInstance("properties"); ++ ++ private static final String CRYPTO_POLICIES_BASE_DIR = ++ "/etc/crypto-policies"; ++ ++ private static final String CRYPTO_POLICIES_JAVA_CONFIG = ++ CRYPTO_POLICIES_BASE_DIR + "/back-ends/java.config"; ++ ++ private static final String CRYPTO_POLICIES_CONFIG = ++ CRYPTO_POLICIES_BASE_DIR + "/config"; ++ ++ private static final class SecurityProviderInfo { ++ int number; ++ String key; ++ String value; ++ SecurityProviderInfo(int number, String key, String value) { ++ this.number = number; ++ this.key = key; ++ this.value = value; ++ } ++ } ++ ++ /* ++ * Invoked when java.security.Security class is initialized, if ++ * java.security.disableSystemPropertiesFile property is not set and ++ * security.useSystemPropertiesFile is true. ++ */ ++ static boolean configure(Properties props) { ++ boolean loadedProps = false; ++ ++ try (BufferedInputStream bis = ++ new BufferedInputStream( ++ new FileInputStream(CRYPTO_POLICIES_JAVA_CONFIG))) { ++ props.load(bis); ++ loadedProps = true; ++ if (sdebug != null) { ++ sdebug.println("reading system security properties file " + ++ CRYPTO_POLICIES_JAVA_CONFIG); ++ sdebug.println(props.toString()); ++ } ++ } catch (IOException e) { ++ if (sdebug != null) { ++ sdebug.println("unable to load security properties from " + ++ CRYPTO_POLICIES_JAVA_CONFIG); ++ e.printStackTrace(); ++ } ++ } ++ ++ try { ++ if (enableFips()) { ++ if (sdebug != null) { sdebug.println("FIPS mode detected"); } ++ loadedProps = false; ++ // Remove all security providers ++ Iterator> i = props.entrySet().iterator(); ++ while (i.hasNext()) { ++ Entry e = i.next(); ++ if (((String) e.getKey()).startsWith("security.provider")) { ++ if (sdebug != null) { sdebug.println("Removing provider: " + e); } ++ i.remove(); ++ } ++ } ++ // Add FIPS security providers ++ String fipsProviderValue = null; ++ for (int n = 1; ++ (fipsProviderValue = (String) props.get("fips.provider." + n)) != null; n++) { ++ String fipsProviderKey = "security.provider." + n; ++ if (sdebug != null) { ++ sdebug.println("Adding provider " + n + ": " + ++ fipsProviderKey + "=" + fipsProviderValue); ++ } ++ props.put(fipsProviderKey, fipsProviderValue); ++ } ++ loadedProps = true; ++ } ++ } catch (Exception e) { ++ if (sdebug != null) { ++ sdebug.println("unable to load FIPS configuration"); ++ e.printStackTrace(); ++ } ++ } ++ return loadedProps; ++ } ++ ++ /* ++ * FIPS is enabled only if crypto-policies are set to "FIPS" ++ * and the com.redhat.fips property is true. ++ */ ++ private static boolean enableFips() throws Exception { ++ boolean fipsEnabled = Boolean.valueOf(System.getProperty("com.redhat.fips", "false")); ++ if (fipsEnabled) { ++ String cryptoPoliciesConfig = new String(Files.readAllBytes(Path.of(CRYPTO_POLICIES_CONFIG))); ++ if (sdebug != null) { sdebug.println("Crypto config:\n" + cryptoPoliciesConfig); } ++ Pattern pattern = Pattern.compile("^FIPS$", Pattern.MULTILINE); ++ return pattern.matcher(cryptoPoliciesConfig).find(); ++ } else { ++ return false; ++ } ++ } ++} +diff --git openjdk.orig///src/java.base/share/conf/security/java.security openjdk///src/java.base/share/conf/security/java.security +--- openjdk.orig///src/java.base/share/conf/security/java.security ++++ openjdk///src/java.base/share/conf/security/java.security +@@ -87,6 +87,14 @@ + #security.provider.tbd=SunPKCS11 ${java.home}/lib/security/nss.cfg + + # ++# Security providers used when global crypto-policies are set to FIPS. ++# ++fips.provider.1=SunPKCS11 ${java.home}/conf/security/nss.fips.cfg ++fips.provider.2=SUN ++fips.provider.3=SunEC ++fips.provider.4=com.sun.net.ssl.internal.ssl.Provider SunPKCS11-NSS-FIPS ++ ++# + # A list of preferred providers for specific algorithms. These providers will + # be searched for matching algorithms before the list of registered providers. + # Entries containing errors (parsing, etc) will be ignored. Use the diff --git a/SPECS/java-11-openjdk.spec b/SPECS/java-11-openjdk.spec index 486955f..3651fa4 100644 --- a/SPECS/java-11-openjdk.spec +++ b/SPECS/java-11-openjdk.spec @@ -200,7 +200,7 @@ # New Version-String scheme-style defines %global majorver 11 -%global securityver 4 +%global securityver 5 # buildjdkver is usually same as %%{majorver}, # but in time of bootstrap of next jdk, it is majorver-1, # and this it is better to change it here, on single place @@ -222,7 +222,7 @@ %global origin_nice OpenJDK %global top_level_dir_name %{origin} %global minorver 0 -%global buildver 11 +%global buildver 10 %global rpmrelease 2 #%%global tagsuffix "" # priority must be 8 digits in total; untill openjdk 1.8 we were using 18..... so when moving to 11 we had to add another digit @@ -661,6 +661,7 @@ exit 0 %config(noreplace) %{etcjavadir -- %{?1}}/conf/security/java.security %config(noreplace) %{etcjavadir -- %{?1}}/conf/logging.properties %config(noreplace) %{etcjavadir -- %{?1}}/conf/security/nss.cfg +%config(noreplace) %{etcjavadir -- %{?1}}/conf/security/nss.fips.cfg %config(noreplace) %{etcjavadir -- %{?1}}/conf/management/jmxremote.access # this is conifg template, thus not config-noreplace %config %{etcjavadir -- %{?1}}/conf/management/jmxremote.password.template @@ -1030,27 +1031,23 @@ Source13: TestCryptoLevel.java # Ensure ECDSA is working Source14: TestECDSA.java +# nss fips configuration file +Source15: nss.fips.cfg.in + ############################################ # # RPM/distribution specific patches # ############################################ -# NSS via SunPKCS11 Provider (disabled comment -# due to memory leak). -Patch1000: rh1648249-add_commented_out_nss_cfg_provider_to_java_security.patch - # Ignore AWTError when assistive technologies are loaded Patch1: rh1648242-accessible_toolkit_crash_do_not_break_jvm.patch # Restrict access to java-atk-wrapper classes Patch2: rh1648644-java_access_bridge_privileged_security.patch -# PR1834, RH1022017: Reduce curves reported by SSL to those in NSS -# Not currently suitable to go upstream as it disables curves -# for all providers unconditionally -Patch525: rh1022017-reduce_ssl_curves.patch -Patch3: rh649512-remove_uses_of_far_in_jpeg_libjpeg_turbo_1_4_compat_for_jdk10_and_up.patch -# PR3694, RH1340845: Add security.useSystemPropertiesFile option to java.security to use system crypto policy -Patch4: pr3694-rh1340845-support_fedora_rhel_system_crypto_policy.patch +# NSS via SunPKCS11 Provider (disabled due to memory leak). +Patch1000: rh1648249-add_commented_out_nss_cfg_provider_to_java_security.patch +# RH1655466: Support RHEL FIPS mode using SunPKCS11 provider +Patch1001: rh1655466-global_crypto_and_fips.patch ############################################# # @@ -1062,10 +1059,16 @@ Patch4: pr3694-rh1340845-support_fedora_rhel_system_crypto_policy.patch ############################################# # -# OpenJDK specific patches +# Upstreamable patches # +# This section includes patches which need to +# be reviewed & pushed to the current development +# tree of OpenJDK. ############################################# +Patch3: rh649512-remove_uses_of_far_in_jpeg_libjpeg_turbo_1_4_compat_for_jdk10_and_up.patch +# PR3694, RH1340845: Add security.useSystemPropertiesFile option to java.security to use system crypto policy +Patch4: pr3694-rh1340845-support_fedora_rhel_system_crypto_policy.patch # RH1566890: CVE-2018-3639 Patch6: rh1566890-CVE_2018_3639-speculative_store_bypass.patch # PR3695: Allow use of system crypto policy to be disabled by the user @@ -1075,6 +1078,18 @@ Patch8: s390-8214206_fix.patch ############################################# # +# Patches appearing in 11.0.6 +# +# This section includes patches which are present +# in the listed OpenJDK 8u release and should be +# able to be removed once that release is out +# and used by this RPM. +############################################# +# JDK-8230923: SunJSSE is not properly initialized in FIPS mode from a configuration file +Patch11: jdk8230923-fips_mode_initialisation_failure.patch + +############################################# +# # JDK 9+ only patches # ############################################# @@ -1320,10 +1335,11 @@ pushd %{top_level_dir_name} %patch6 -p1 %patch7 -p1 %patch8 -p1 -%patch525 -p1 +%patch11 -p1 popd # openjdk %patch1000 +%patch1001 # Extract systemtap tapsets %if %{with_systemtap} @@ -1369,6 +1385,9 @@ done # Setup nss.cfg sed -e "s:@NSS_LIBDIR@:%{NSS_LIBDIR}:g" %{SOURCE11} > nss.cfg +# Setup nss.fips.cfg +sed -e "s:@NSS_LIBDIR@:%{NSS_LIBDIR}:g" %{SOURCE15} > nss.fips.cfg +sed -i -e "s:@NSS_SECMOD@:/etc/pki/nssdb:g" nss.fips.cfg %build # How many CPU's do we have? @@ -1474,6 +1493,9 @@ export JAVA_HOME=$(pwd)/%{buildoutputdir -- $suffix}/images/%{jdkimage} # Install nss.cfg right away as we will be using the JRE above install -m 644 nss.cfg $JAVA_HOME/conf/security/ +# Install nss.fips.cfg: NSS configuration for global FIPS mode (crypto-policies) +install -m 644 nss.fips.cfg $JAVA_HOME/conf/security/ + # Use system-wide tzdata rm $JAVA_HOME/lib/tzdb.dat ln -s %{_datadir}/javazi-1.8/tzdb.dat $JAVA_HOME/lib/tzdb.dat @@ -1854,6 +1876,38 @@ require "copy_jdk_configs.lua" %endif %changelog +* Fri Oct 25 2019 Andrew John Hughes - 1:11.0.5.10-2 +- Disable FIPS mode support unless com.redhat.fips is set to "true". +- Resolves: rhbz#1751845 + +* Wed Oct 09 2019 Andrew Hughes - 1:11.0.5.10-1 +- Update to shenandoah-jdk-11.0.5+10 (GA) +- Switch to GA mode for final release. +- Remove PR1834/RH1022017 which is now handled by JDK-8228825 upstream. +- Resolves: rhbz#1753423 + +* Wed Oct 09 2019 Andrew Hughes - 1:11.0.5.9-0.0.ea +- Update to shenandoah-jdk-11.0.5+9 (EA) +- Resolves: rhbz#1753423 + +* Mon Oct 07 2019 Andrew Hughes - 1:11.0.5.1-0.1.ea +- Update to shenandoah-jdk-11.0.5+1 (EA) +- Switch to EA mode for 11.0.5 pre-release builds. +- Drop JDK-8223482 which is included upstream in 11.0.5+1. +- Resolves: rhbz#1753423 + +* Mon Sep 30 2019 Andrew John Hughes - 1:11.0.4.11-4 +- Backport JDK-8230923 so arguments are passed to security providers. +- Update RH1655466 patch with changes in OpenJDK 8 version. +- SunPKCS11 runtime provider name is a concatenation of "SunPKCS11-" and the name in the config file. +- Change nss.fips.cfg config name to "NSS-FIPS" to avoid confusion with nss.cfg. +- No need to substitute path to nss.fips.cfg as java.security file supports a java.home variable. +- Resolves: rhbz#1751845 + +* Tue Aug 13 2019 Martin Balao - 1:11.0.4.11-3 +- Support the FIPS mode crypto policy on RHEL 8. +- Resolves: rhbz#1725961 + * Tue Jul 09 2019 Andrew Hughes - 1:11.0.4.11-2 - Drop NSS runtime dependencies and patches to link against it. - Resolves: rhbz#1678554