diff --git a/testsuite/utils/src/main/java/org/keycloak/testsuite/KeycloakServer.java b/testsuite/utils/src/main/java/org/keycloak/testsuite/KeycloakServer.java
index 9ab36b0..ea54e0e 100755
--- a/testsuite/utils/src/main/java/org/keycloak/testsuite/KeycloakServer.java
+++ b/testsuite/utils/src/main/java/org/keycloak/testsuite/KeycloakServer.java
@@ -40,6 +40,7 @@ import org.keycloak.services.resources.KeycloakApplication;
import org.keycloak.testsuite.util.cli.TestsuiteCLI;
import org.keycloak.util.JsonSerialization;
+import javax.net.ssl.KeyManagerFactory;
import javax.net.ssl.SSLContext;
import javax.servlet.DispatcherType;
import java.io.File;
@@ -47,6 +48,8 @@ import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.security.KeyStore;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
@@ -376,7 +379,7 @@ public class KeycloakServer {
.setIoThreads(config.getWorkerThreads() / 8);
if (config.getPortHttps() != -1) {
- builder = builder.addHttpsListener(config.getPortHttps(), config.getHost(), SSLContext.getDefault());
+ builder = builder.addHttpsListener(config.getPortHttps(), config.getHost(), createSSLContext());
}
server = new UndertowJaxrsServer();
@@ -471,4 +474,35 @@ public class KeycloakServer {
}
}
+ private SSLContext createSSLContext() throws Exception {
+ String keyStorePath = System.getProperty("keycloak.tls.keystore.path");
+
+ if (keyStorePath == null) {
+ return SSLContext.getDefault();
+ }
+
+ InputStream stream = Files.newInputStream(Paths.get(keyStorePath));
+
+ if (stream == null) {
+ throw new RuntimeException("Could not load keystore");
+ }
+
+ try (InputStream is = stream) {
+ KeyStore keyStore = KeyStore.getInstance("JKS");
+
+ char[] keyStorePassword = System.getProperty("keycloak.tls.keystore.password", "password").toCharArray();
+
+ keyStore.load(is, keyStorePassword);
+
+ KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
+
+ keyManagerFactory.init(keyStore, keyStorePassword);
+
+ SSLContext sslContext = SSLContext.getInstance("TLS");
+
+ sslContext.init(keyManagerFactory.getKeyManagers(), null, null);
+
+ return sslContext;
+ }
+ }
}