2013-02-20 4 views
6

나는 내 자신의 트러스트 스토어를로드하는 커스텀 SSL 팩토리를 가지고있다. 나는 truststore.jks 프로젝트 루트 폴더에 파일을 넣을 때리소스 폴더 (maven) 안에있는 키 저장소를로드하는 방법은 무엇입니까?

는 지금, 그것은 다음 줄에서 작동합니다

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

하지만 받는다는으로 만들어진 내 리소스 폴더 안에 내 신뢰를 할 위치 경로는 src/main/resources입니다.

그럼 내가 할 그것은 다음 줄 작동하지 않습니다 : 입력 스트림이 존재

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

있지만. 나는 그것을 검사했다. ks.load (...) 할 때만 실패합니다. 내가 할

는 예외입니다 :

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

이 왜입니까?

감사합니다, 데이브

+0

시도해 볼 수있는 것이 하나 있습니다. getResourceAsStream에 "/truststore.jks"를 지정하여 클래스 경로의 루트에서 검색하십시오. –

+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

이 솔루션은 트러스트 스토어가 리소스라는 사실과 아무 관련이 없습니다. 당신의 대답은 (나 앞에서 언급했듯이) 개발 중에 만 작동하기 때문에 나는 작동하지 않습니다! –

관련 문제