From f658aa21a073ff3b9d7f6c57571eb1e772741b6b Mon Sep 17 00:00:00 2001 From: Matt Gill Date: Tue, 23 Jan 2018 10:23:30 +0000 Subject: [PATCH 1/6] Implemented IOC to make code more readable. --- .../admin/servermgmt/KeystoreManager.java | 32 +++++++++---------- .../servermgmt/domain/DomainSecurity.java | 8 +++-- 2 files changed, 21 insertions(+), 19 deletions(-) diff --git a/nucleus/admin/server-mgmt/src/main/java/com/sun/enterprise/admin/servermgmt/KeystoreManager.java b/nucleus/admin/server-mgmt/src/main/java/com/sun/enterprise/admin/servermgmt/KeystoreManager.java index b543b89bdfd..9c8c8ebe052 100644 --- a/nucleus/admin/server-mgmt/src/main/java/com/sun/enterprise/admin/servermgmt/KeystoreManager.java +++ b/nucleus/admin/server-mgmt/src/main/java/com/sun/enterprise/admin/servermgmt/KeystoreManager.java @@ -274,51 +274,51 @@ protected void addToAsadminTrustStore( } */ - protected void copyCertificates(File configRoot, DomainConfig config, String masterPassword) + /** + * Copy certain certificates from the keystore into the truststore. + */ + protected void copyCertificates(File keyStore, File trustStore, DomainConfig config, String masterPassword) throws DomainException { try { - copyCert(configRoot, CERTIFICATE_ALIAS, masterPassword); - copyCert(configRoot, INSTANCE_SECURE_ADMIN_ALIAS, masterPassword); + copyCert(keyStore, trustStore, CERTIFICATE_ALIAS, masterPassword); + copyCert(keyStore, trustStore, INSTANCE_SECURE_ADMIN_ALIAS, masterPassword); } catch(RepositoryException re) { String msg = _strMgr.getString("SomeProblemWithKeytool", re.getMessage()); throw new DomainException(msg); - } } - private void copyCert(final File configRoot, - final String alias, - final String masterPassword) throws RepositoryException { - File keystore = new File(configRoot, DomainConstants.KEYSTORE_FILE); - File truststore = new File(configRoot, DomainConstants.TRUSTSTORE_FILE); + private void copyCert(final File keyStore, final File trustStore, + final String alias, final String masterPassword) throws RepositoryException { + File certFile = null; String[] input = {masterPassword}; String[] keytoolCmd = null; KeytoolExecutor p = null; try { - //export the newly created certificate from the keystore - certFile = new File(configRoot, alias + ".cer"); + // export the newly created certificate from the first keystore + certFile = new File(keyStore.getParentFile(), alias + ".cer"); keytoolCmd = new String[]{ "-export", - "-keystore", keystore.getAbsolutePath(), + "-keystore", keyStore.getAbsolutePath(), "-alias", alias, "-file", certFile.getAbsolutePath(),}; p = new KeytoolExecutor(keytoolCmd, 30, input); - p.execute("trustStoreNotCreated", truststore); + p.execute("trustStoreNotCreated", trustStore); - //import the newly created certificate into the truststore + // import the newly created certificate into the truststore keytoolCmd = new String[]{ "-import", "-noprompt", - "-keystore", truststore.getAbsolutePath(), + "-keystore", trustStore.getAbsolutePath(), "-alias", alias, "-file", certFile.getAbsolutePath(),}; p = new KeytoolExecutor(keytoolCmd, 30, input); - p.execute("trustStoreNotCreated", truststore); + p.execute("trustStoreNotCreated", trustStore); //import the newly created certificate into the asadmin truststore /* commented out till asadmintruststore can be added back */ diff --git a/nucleus/admin/server-mgmt/src/main/java/com/sun/enterprise/admin/servermgmt/domain/DomainSecurity.java b/nucleus/admin/server-mgmt/src/main/java/com/sun/enterprise/admin/servermgmt/domain/DomainSecurity.java index 849d0126b2b..5e6672675d9 100644 --- a/nucleus/admin/server-mgmt/src/main/java/com/sun/enterprise/admin/servermgmt/domain/DomainSecurity.java +++ b/nucleus/admin/server-mgmt/src/main/java/com/sun/enterprise/admin/servermgmt/domain/DomainSecurity.java @@ -104,9 +104,11 @@ void createPasswordAliasKeystore(File pwFile, String password) */ void createSSLCertificateDatabase(File configDir, DomainConfig config, String masterPassword) throws RepositoryException { - createKeyStore(new File(configDir, DomainConstants.KEYSTORE_FILE), config, masterPassword); - changeKeystorePassword(DEFAULT_MASTER_PASSWORD, masterPassword, new File(configDir, DomainConstants.TRUSTSTORE_FILE)); - copyCertificates(configDir, config, masterPassword); + File trustStore = new File(configDir, DomainConstants.TRUSTSTORE_FILE); + File keyStore = new File(configDir, DomainConstants.KEYSTORE_FILE); + createKeyStore(keyStore, config, masterPassword); + changeKeystorePassword(DEFAULT_MASTER_PASSWORD, masterPassword, trustStore); + copyCertificates(keyStore, trustStore, config, masterPassword); } /** From 37c53ee959e7d649a18a24f4f3a9a68413a137a5 Mon Sep 17 00:00:00 2001 From: Matt Gill Date: Tue, 23 Jan 2018 11:40:51 +0000 Subject: [PATCH 2/6] Added code to import certificates from JRE trust store to Payara trust store on domain creation. --- .../admin/servermgmt/KeystoreManager.java | 17 +++++++++++++++++ .../admin/servermgmt/domain/DomainSecurity.java | 1 + 2 files changed, 18 insertions(+) diff --git a/nucleus/admin/server-mgmt/src/main/java/com/sun/enterprise/admin/servermgmt/KeystoreManager.java b/nucleus/admin/server-mgmt/src/main/java/com/sun/enterprise/admin/servermgmt/KeystoreManager.java index 9c8c8ebe052..ce9b0c25d96 100644 --- a/nucleus/admin/server-mgmt/src/main/java/com/sun/enterprise/admin/servermgmt/KeystoreManager.java +++ b/nucleus/admin/server-mgmt/src/main/java/com/sun/enterprise/admin/servermgmt/KeystoreManager.java @@ -289,6 +289,23 @@ protected void copyCertificates(File keyStore, File trustStore, DomainConfig con } } + protected void copyCertificatesFromJdk(File trustStore, DomainConfig config, String masterPassword) + throws RepositoryException { + String javaHome = System.getProperty("java.home").concat("/").replaceAll("//", "/"); + String jreHome = (javaHome.contains("jre")) ? javaHome : javaHome + "jre/"; + String jreTrustStoreLocation = jreHome + "lib/security/"; + File jdkTrustStore = new File(jreTrustStoreLocation, "cacerts"); + + String[] keytoolCmd = { + "-importkeystore", + "-srckeystore", jdkTrustStore.getAbsolutePath(), + "-destkeystore", trustStore.getAbsolutePath() + }; + + KeytoolExecutor keytool = new KeytoolExecutor(keytoolCmd, 30, new String[]{masterPassword}); + keytool.execute("trustStoreNotCreated", trustStore); + } + private void copyCert(final File keyStore, final File trustStore, final String alias, final String masterPassword) throws RepositoryException { diff --git a/nucleus/admin/server-mgmt/src/main/java/com/sun/enterprise/admin/servermgmt/domain/DomainSecurity.java b/nucleus/admin/server-mgmt/src/main/java/com/sun/enterprise/admin/servermgmt/domain/DomainSecurity.java index 5e6672675d9..557979fa0b2 100644 --- a/nucleus/admin/server-mgmt/src/main/java/com/sun/enterprise/admin/servermgmt/domain/DomainSecurity.java +++ b/nucleus/admin/server-mgmt/src/main/java/com/sun/enterprise/admin/servermgmt/domain/DomainSecurity.java @@ -109,6 +109,7 @@ void createSSLCertificateDatabase(File configDir, DomainConfig config, String ma createKeyStore(keyStore, config, masterPassword); changeKeystorePassword(DEFAULT_MASTER_PASSWORD, masterPassword, trustStore); copyCertificates(keyStore, trustStore, config, masterPassword); + copyCertificatesFromJdk(trustStore, config, masterPassword); } /** From bc230b21970303d948b39392a5ddd6f99fa1816a Mon Sep 17 00:00:00 2001 From: Matt Gill Date: Tue, 23 Jan 2018 12:14:46 +0000 Subject: [PATCH 3/6] Added more specific error. --- .../admin/servermgmt/KeystoreManager.java | 13 +++++++------ .../admin/servermgmt/LocalStrings.properties | 1 + 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/nucleus/admin/server-mgmt/src/main/java/com/sun/enterprise/admin/servermgmt/KeystoreManager.java b/nucleus/admin/server-mgmt/src/main/java/com/sun/enterprise/admin/servermgmt/KeystoreManager.java index ce9b0c25d96..c88a86dc076 100644 --- a/nucleus/admin/server-mgmt/src/main/java/com/sun/enterprise/admin/servermgmt/KeystoreManager.java +++ b/nucleus/admin/server-mgmt/src/main/java/com/sun/enterprise/admin/servermgmt/KeystoreManager.java @@ -293,17 +293,18 @@ protected void copyCertificatesFromJdk(File trustStore, DomainConfig config, Str throws RepositoryException { String javaHome = System.getProperty("java.home").concat("/").replaceAll("//", "/"); String jreHome = (javaHome.contains("jre")) ? javaHome : javaHome + "jre/"; - String jreTrustStoreLocation = jreHome + "lib/security/"; - File jdkTrustStore = new File(jreTrustStoreLocation, "cacerts"); + String javaTrustStoreLocation = jreHome + "lib/security/"; + File javaTrustStore = new File(javaTrustStoreLocation, "cacerts"); String[] keytoolCmd = { "-importkeystore", - "-srckeystore", jdkTrustStore.getAbsolutePath(), - "-destkeystore", trustStore.getAbsolutePath() + "-srckeystore", javaTrustStore.getAbsolutePath(), + "-destkeystore", trustStore.getAbsolutePath(), + "-noprompt" }; - KeytoolExecutor keytool = new KeytoolExecutor(keytoolCmd, 30, new String[]{masterPassword}); - keytool.execute("trustStoreNotCreated", trustStore); + KeytoolExecutor keytool = new KeytoolExecutor(keytoolCmd, 30, new String[]{masterPassword, "changeit"}); + keytool.execute("trustStoreJavaImportError", trustStore); } private void copyCert(final File keyStore, final File trustStore, diff --git a/nucleus/admin/server-mgmt/src/main/java/com/sun/enterprise/admin/servermgmt/LocalStrings.properties b/nucleus/admin/server-mgmt/src/main/java/com/sun/enterprise/admin/servermgmt/LocalStrings.properties index 7d16bbf15af..9668bee3512 100644 --- a/nucleus/admin/server-mgmt/src/main/java/com/sun/enterprise/admin/servermgmt/LocalStrings.properties +++ b/nucleus/admin/server-mgmt/src/main/java/com/sun/enterprise/admin/servermgmt/LocalStrings.properties @@ -48,6 +48,7 @@ domainConfig=domain config adminUserComment=# Domain User and Password - Do Not Delete Entry Above keyStoreNotCreated=Error creating key store {0} trustStoreNotCreated=Error creating trust store {0} +trustStoreJavaImportError=Error importing certificates from Java trust store to trust store {0} masterPasswordFileNotCreated=Error creating master password file {0} timerDbnNotCreated=Error creating timer database dbn file timerWalNotCreated=Error creating timer database wal file From d1ab9267506bdf42ca9f1cdde7d5b28b913648f1 Mon Sep 17 00:00:00 2001 From: Matt Gill Date: Tue, 23 Jan 2018 12:24:05 +0000 Subject: [PATCH 4/6] Imported Zulu JDK9 cacerts store entries into nucleus/admin/template/src/main/resources/config/cacerts.jks --- .../src/main/resources/config/cacerts.jks | Bin 79127 -> 251533 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/nucleus/admin/template/src/main/resources/config/cacerts.jks b/nucleus/admin/template/src/main/resources/config/cacerts.jks index f24c1397718ed69d6aa678f1d04880a29c876929..d939be8f42cb800d2700598e2c17a6703f4f300c 100644 GIT binary patch delta 115894 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%0APz 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 delta 485 zcmWlVT}abm7{&KK=Xn*S%+)Rw7PJeCGDb-tMG})5_F+g}RT5}M4l0TSi!|y+(j46c z|5fNkAk82oU+VM)5rJ6?ih{uCq7SN3tklXPY3tv`IUIhRi|0AXtMk0iIwzmY=K_I% z_}WCN#w1u6!E5E}HE4(HP35fX*YB3skI7BpgG15?_jJ8qD1|u;HF#XJ=EQi`mvvM?ygz&|rJO|H( z#Zz{*;0ib$^|>=gCcyYz83uKssZ&n9l^NwgpZNnf_)09t=OU<{4=Om_gLiQE^Ba}P z?dB_ZyvRHTKYjdv+=*G~gF7ERqg=dJF2VD?jHer<6I|LU{lYsLlT%*kFj+8CWj=sA zx-kY9ta}3{(-;K5#nGg^k-#Z%A|;!_gSE&AO~TAtmvla8-;IzztxVSKYqq8nF2uqRRR*leK)fO?s5WtE9V_*|a%X%w4x(ESFeW quGA3x=U)DjG(10-b0B8I2>o7kF|Z&O8L6EgFCDGAHnykmrQ{#>*SCKF From 2243316983f1a627e873dae22a2b1067f8c1cec4 Mon Sep 17 00:00:00 2001 From: Matt Gill Date: Tue, 23 Jan 2018 12:48:47 +0000 Subject: [PATCH 5/6] Added copyright headers, and reorganised imports. --- .../admin/servermgmt/KeystoreManager.java | 31 ++++++++++++------- .../admin/servermgmt/LocalStrings.properties | 2 ++ .../servermgmt/domain/DomainSecurity.java | 7 +++-- 3 files changed, 26 insertions(+), 14 deletions(-) diff --git a/nucleus/admin/server-mgmt/src/main/java/com/sun/enterprise/admin/servermgmt/KeystoreManager.java b/nucleus/admin/server-mgmt/src/main/java/com/sun/enterprise/admin/servermgmt/KeystoreManager.java index c88a86dc076..8efb762c74b 100644 --- a/nucleus/admin/server-mgmt/src/main/java/com/sun/enterprise/admin/servermgmt/KeystoreManager.java +++ b/nucleus/admin/server-mgmt/src/main/java/com/sun/enterprise/admin/servermgmt/KeystoreManager.java @@ -36,28 +36,37 @@ * and therefore, elected the GPL Version 2 license, then the option applies * only if the new code is made subject to such option by the copyright * holder. + * + * Portions Copyright [2018] [Payara Foundation and/or its affiliates] */ package com.sun.enterprise.admin.servermgmt; -import com.sun.enterprise.admin.servermgmt.domain.DomainConstants; -import com.sun.enterprise.admin.servermgmt.pe.PEFileLayout; -import com.sun.enterprise.universal.glassfish.ASenvPropertyReader; -import com.sun.enterprise.universal.io.SmartFile; -import com.sun.enterprise.universal.process.ProcessUtils; -import com.sun.enterprise.util.*; -import com.sun.enterprise.util.i18n.StringManager; -import com.sun.enterprise.util.io.FileUtils; -import com.sun.enterprise.util.net.NetUtils; +import static com.sun.enterprise.admin.servermgmt.SLogger.BAD_DELETE_TEMP_CERT_FILE; +import static com.sun.enterprise.admin.servermgmt.SLogger.UNHANDLED_EXCEPTION; +import static com.sun.enterprise.admin.servermgmt.SLogger.getLogger; + import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.security.KeyStore; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Enumeration; +import java.util.List; import java.util.logging.Level; import java.util.regex.Pattern; -import static com.sun.enterprise.admin.servermgmt.SLogger.*; +import com.sun.enterprise.admin.servermgmt.pe.PEFileLayout; +import com.sun.enterprise.universal.glassfish.ASenvPropertyReader; +import com.sun.enterprise.universal.io.SmartFile; +import com.sun.enterprise.universal.process.ProcessUtils; +import com.sun.enterprise.util.ExecException; +import com.sun.enterprise.util.OS; +import com.sun.enterprise.util.ProcessExecutor; +import com.sun.enterprise.util.SystemPropertyConstants; +import com.sun.enterprise.util.i18n.StringManager; +import com.sun.enterprise.util.net.NetUtils; /** * @author kebbs diff --git a/nucleus/admin/server-mgmt/src/main/java/com/sun/enterprise/admin/servermgmt/LocalStrings.properties b/nucleus/admin/server-mgmt/src/main/java/com/sun/enterprise/admin/servermgmt/LocalStrings.properties index 9668bee3512..21ec4db3abd 100644 --- a/nucleus/admin/server-mgmt/src/main/java/com/sun/enterprise/admin/servermgmt/LocalStrings.properties +++ b/nucleus/admin/server-mgmt/src/main/java/com/sun/enterprise/admin/servermgmt/LocalStrings.properties @@ -37,6 +37,8 @@ # only if the new code is made subject to such option by the copyright # holder. # +# Portions Copyright [2018] [Payara Foundation and/or its affiliates] +# validator.invalid_value=Invalid value for {0} : {1} validator.invalid_type=Invalid type for {0}. Expected {1} or subtype but got {2} diff --git a/nucleus/admin/server-mgmt/src/main/java/com/sun/enterprise/admin/servermgmt/domain/DomainSecurity.java b/nucleus/admin/server-mgmt/src/main/java/com/sun/enterprise/admin/servermgmt/domain/DomainSecurity.java index 557979fa0b2..f746318c47f 100644 --- a/nucleus/admin/server-mgmt/src/main/java/com/sun/enterprise/admin/servermgmt/domain/DomainSecurity.java +++ b/nucleus/admin/server-mgmt/src/main/java/com/sun/enterprise/admin/servermgmt/domain/DomainSecurity.java @@ -36,6 +36,8 @@ * and therefore, elected the GPL Version 2 license, then the option applies * only if the new code is made subject to such option by the copyright * holder. + * + * Portions Copyright [2018] [Payara Foundation and/or its affiliates] */ package com.sun.enterprise.admin.servermgmt.domain; @@ -43,15 +45,14 @@ import java.io.File; import java.io.IOException; -import org.glassfish.security.common.FileRealmHelper; - import com.sun.enterprise.admin.servermgmt.DomainConfig; import com.sun.enterprise.admin.servermgmt.MasterPasswordFileManager; import com.sun.enterprise.admin.servermgmt.RepositoryException; -import com.sun.enterprise.admin.util.AdminConstants; import com.sun.enterprise.security.store.PasswordAdapter; import com.sun.enterprise.util.i18n.StringManager; +import org.glassfish.security.common.FileRealmHelper; + public class DomainSecurity extends MasterPasswordFileManager { private static final StringManager _strMgr = From f0cde06c01ca4bd14f0c61d3b5ca8fb19de72a1e Mon Sep 17 00:00:00 2001 From: Matt Gill Date: Tue, 23 Jan 2018 12:55:52 +0000 Subject: [PATCH 6/6] Added Javadoc to touched methods. Removed unused parameter. --- .../admin/servermgmt/KeystoreManager.java | 22 +++++++++++++++---- .../servermgmt/domain/DomainSecurity.java | 2 +- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/nucleus/admin/server-mgmt/src/main/java/com/sun/enterprise/admin/servermgmt/KeystoreManager.java b/nucleus/admin/server-mgmt/src/main/java/com/sun/enterprise/admin/servermgmt/KeystoreManager.java index 8efb762c74b..9177094c09f 100644 --- a/nucleus/admin/server-mgmt/src/main/java/com/sun/enterprise/admin/servermgmt/KeystoreManager.java +++ b/nucleus/admin/server-mgmt/src/main/java/com/sun/enterprise/admin/servermgmt/KeystoreManager.java @@ -283,9 +283,9 @@ protected void addToAsadminTrustStore( } */ - /** - * Copy certain certificates from the keystore into the truststore. - */ + /** + * Copy certain certificates from the keystore into the truststore. + */ protected void copyCertificates(File keyStore, File trustStore, DomainConfig config, String masterPassword) throws DomainException { @@ -298,7 +298,13 @@ protected void copyCertificates(File keyStore, File trustStore, DomainConfig con } } - protected void copyCertificatesFromJdk(File trustStore, DomainConfig config, String masterPassword) + /** + * Copies all non-existing certificates from the currently used JDK to the Payara trust store. + * + * @param trustStore the trust store to copy the certificates to. + * @param masterPassword the password to the trust store. + */ + protected void copyCertificatesFromJdk(File trustStore, String masterPassword) throws RepositoryException { String javaHome = System.getProperty("java.home").concat("/").replaceAll("//", "/"); String jreHome = (javaHome.contains("jre")) ? javaHome : javaHome + "jre/"; @@ -316,6 +322,14 @@ protected void copyCertificatesFromJdk(File trustStore, DomainConfig config, Str keytool.execute("trustStoreJavaImportError", trustStore); } + /** + * Copies a certificate from a keyStore to a trustStore. + * + * @param keyStore the key store to copy the certificate from. + * @param trustStore the trust store to copy the certificate to. + * @param alias the name of the certificate to copy. + * @param masterPassword the password for the trust stores. + */ private void copyCert(final File keyStore, final File trustStore, final String alias, final String masterPassword) throws RepositoryException { diff --git a/nucleus/admin/server-mgmt/src/main/java/com/sun/enterprise/admin/servermgmt/domain/DomainSecurity.java b/nucleus/admin/server-mgmt/src/main/java/com/sun/enterprise/admin/servermgmt/domain/DomainSecurity.java index f746318c47f..c5ae558800c 100644 --- a/nucleus/admin/server-mgmt/src/main/java/com/sun/enterprise/admin/servermgmt/domain/DomainSecurity.java +++ b/nucleus/admin/server-mgmt/src/main/java/com/sun/enterprise/admin/servermgmt/domain/DomainSecurity.java @@ -110,7 +110,7 @@ void createSSLCertificateDatabase(File configDir, DomainConfig config, String ma createKeyStore(keyStore, config, masterPassword); changeKeystorePassword(DEFAULT_MASTER_PASSWORD, masterPassword, trustStore); copyCertificates(keyStore, trustStore, config, masterPassword); - copyCertificatesFromJdk(trustStore, config, masterPassword); + copyCertificatesFromJdk(trustStore, masterPassword); } /**