2013-02-20 10 views
6

Mam niestandardową fabrykę SSL, w której ładuję mój własny magazyn zaufanych certyfikatów.Jak załadować magazyn kluczy, który znajduje się w folderze zasobów (maven)?

Teraz kiedy mogę umieścić plik truststore.jks do folderu głównego projektu, to działa z następującą linię:

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

Ale chcę mojego magazynu zaufanych certyfikatów w moim folderze zasobów, który został zbudowany z Maven gdzie ścieżka to src/main/resources.

Potem robię i to nie działa z następującą linię:

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

Choć strumień wejściowy istnieje. Sprawdziłem to. Zawodzi tylko wtedy, gdy robię ks.load (...).

wyjątkiem tego, że pojawia się:

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

Dlaczego tak jest?

Pozdrawiam, Dave

+0

jedna rzecz, którą możesz spróbować, przychodzi ci do głowy. Określ "/truststore.jks" w swoim getResourceAsStream, aby wyszukiwał z katalogu głównego ścieżki klasy. –

+0

Próbowałem też, bez powodzenia ... –

Odpowiedz

0

Dziwne, że teraz działa ...

miałem

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

i zmienić drugą linię do

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

ktoś wie dlaczego? Czy to rozwiązanie jest w porządku?

+4

To będzie działać tylko w twoim lokalnym środowisku programistycznym. Po zbudowaniu artefaktu ścieżka 'src/main/resources' będzie niepoprawna. – vegemite4me

+1

Należy zaktualizować oryginalne pytanie, zamiast zamieszczać nowe pytanie jako odpowiedź. –

+0

To rozwiązanie nie ma nic wspólnego z faktem, że magazyn zaufanych certyfikatów jest zasobem. Twoja odpowiedź (jak wspomniano wcześniej) działa tylko podczas programowania, więc nie działa! –

Powiązane problemy