This is an automated email from the ASF dual-hosted git repository.

astefanutti pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel-k.git

commit 1d665571aa0c94d4d7dca257b6ef7ffaf06996bb
Author: Antonin Stefanutti <anto...@stefanutti.fr>
AuthorDate: Fri Mar 26 10:01:18 2021 +0100

    feat(build): Import root CA certificates into custom truststore
---
 pkg/util/jvm/keystore.go | 27 +++++++++++++++++++++++++--
 1 file changed, 25 insertions(+), 2 deletions(-)

diff --git a/pkg/util/jvm/keystore.go b/pkg/util/jvm/keystore.go
index c1de152..60003d2 100644
--- a/pkg/util/jvm/keystore.go
+++ b/pkg/util/jvm/keystore.go
@@ -35,11 +35,34 @@ func GenerateJavaKeystore(ctx context.Context, keystoreDir, 
keystoreName string,
        }
        defer os.Remove(path.Join(keystoreDir, tmpFile))
 
-       args := strings.Fields(fmt.Sprintf("-importcert -alias maven -file %s 
-keystore %s", tmpFile, keystoreName))
+       args := strings.Fields(fmt.Sprintf("-importcert -noprompt -alias maven 
-file %s -keystore %s", tmpFile, keystoreName))
        cmd := exec.CommandContext(ctx, "keytool", args...)
        cmd.Dir = keystoreDir
        cmd.Stderr = os.Stderr
        cmd.Stdout = os.Stdout
 
-       return cmd.Run()
+       err := cmd.Run()
+       if err != nil {
+               return err
+       }
+
+       // Try to locale root CA certificates truststore, in order to import 
them
+       // into the newly created truststore. It avoids tempering the 
system-wide
+       // JVM truststore.
+       javaHome, ok := os.LookupEnv("JAVA_HOME")
+       if ok {
+               caCertsPath := path.Join(javaHome, "lib/security/cacerts")
+               args := strings.Fields(fmt.Sprintf("-importkeystore -noprompt 
-srckeystore %s -srcstorepass %s -destkeystore %s", caCertsPath, "changeit", 
keystoreName))
+               cmd := exec.CommandContext(ctx, "keytool", args...)
+               cmd.Dir = keystoreDir
+               cmd.Stderr = os.Stderr
+               cmd.Stdout = os.Stdout
+
+               err := cmd.Run()
+               if err != nil {
+                       return err
+               }
+       }
+
+       return nil
 }

Reply via email to