2013-02-20 2 views
6

У меня есть обычная фабрика SSL, где я загружаю собственный собственный магазин.Как загрузить хранилище ключей, которое находится внутри папки ресурсов (maven)?

Теперь, когда я положил на truststore.jks файл в корневой папке проекта, она работает с помощью следующей строки:

ks.load(new FileInputStream("/truststore.jks", passphrase); 

Но я хочу, чтобы мой в моей доверенных сертификатов папки ресурсов, который был построен с Maven, где путь src/main/resources.

Тогда я и не работает со следующей строкой:

ks.load(this.getClass().getResourcesAsStream("/truststore.jks"), passphrase); 

Хотя входной поток существует. Я проверил это. Это происходит только при выполнении ks.load (...).

Исключение, я получаю:

java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty 

Почему?

С уважением, Dave

+0

Одна вещь, которую вы могли бы попробовать, приходит на ум. Укажите «/truststore.jks» в вашем getResourceAsStream, чтобы он искал из корня пути к классам. –

+0

Я тоже пробовал это, не повезло ... –

ответ

0

Странно, он работает сейчас ...

Я имел

Properties systemProps = System.getProperties(); 
systemProps.put("javax.net.ssl.trustStore", "/truststore.jks"); 
systemProps.put("javax.net.ssl.trustStorePassword", "changeit"); 
System.setProperties(systemProps); 

и изменить вторую строку в

systemProps.put("javax.net.ssl.trustStore", "src/main/resources/truststore.jks"); 

Любой знает, почему? Это решение нормально?

+4

Это будет работать только в вашей локальной среде разработки. После создания артефакта путь 'src/main/resources' будет недействительным. – vegemite4me

+1

Пожалуйста, обновите свой исходный вопрос, а не отправляйте новый вопрос в качестве ответа. –

+0

Это решение не имеет ничего общего с тем фактом, что truststore - это ресурс. Ваш ответ (как указано выше) работает только во время разработки, поэтому я не работаю! –

Смежные вопросы