diff --git a/common/src/main/java/org/keycloak/common/util/KeystoreUtil.java b/common/src/main/java/org/keycloak/common/util/KeystoreUtil.java
index dad2a31..070d517 100755
--- a/common/src/main/java/org/keycloak/common/util/KeystoreUtil.java
+++ b/common/src/main/java/org/keycloak/common/util/KeystoreUtil.java
@@ -43,9 +43,21 @@ public class KeystoreUtil {
public static KeyStore loadKeyStore(String filename, String password) throws Exception {
KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
- InputStream trustStream = (filename.startsWith(GenericConstants.PROTOCOL_CLASSPATH))
- ?KeystoreUtil.class.getResourceAsStream(filename.replace(GenericConstants.PROTOCOL_CLASSPATH, ""))
- :new FileInputStream(new File(filename));
+ InputStream trustStream = null;
+ if (filename.startsWith(GenericConstants.PROTOCOL_CLASSPATH)) {
+ String resourcePath = filename.replace(GenericConstants.PROTOCOL_CLASSPATH, "");
+ if (Thread.currentThread().getContextClassLoader() != null) {
+ trustStream = Thread.currentThread().getContextClassLoader().getResourceAsStream(resourcePath);
+ }
+ if (trustStream == null) {
+ trustStream = KeystoreUtil.class.getResourceAsStream(resourcePath);
+ }
+ if (trustStream == null) {
+ throw new RuntimeException("Unable to find key store in classpath");
+ }
+ } else {
+ trustStream = new FileInputStream(new File(filename));
+ }
trustStore.load(trustStream, password.toCharArray());
trustStream.close();
return trustStore;