2015-09-22 32 views
0

我有一個工作代碼與服務器進行通信,但現在信任存儲文件已添加到服務器進行身份驗證。如何store.jks文件添加信任代碼如下:如何在Spring Java中將信任存儲文件加載到以下代碼

我的Java代碼:

KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType()); 
     keyStore.load(new FileInputStream("https://stackoverflow.com/users/Documents/workspace/publickey.cert"), 
       "password".toCharArray()); 
     SSLConnectionSocketFactory socketFactory = new SSLConnectionSocketFactory(
       new SSLContextBuilder() 
         .loadTrustMaterial(null, new TrustSelfSignedStrategy()) 
         .loadKeyMaterial(keyStore, "changeit".toCharArray()).build()); 
     HttpClient httpClient = HttpClients.custom().setSSLSocketFactory(socketFactory).build(); 
     ClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(
       httpClient); 
     RestTemplate restTemplate = new RestTemplate(requestFactory); 

    ResponseEntity<String> result = restTemplate.exchange("url", HttpMethod.GET, new HttpEntity<String>(), String.class); 

回答

1

假設你正確導入您的.cert文件到store.jks文件,你可以做這樣的事情來加載了store.jks文件(或繼續使用您當前使用的方法加載文件)。

KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType()); 
ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); 
InputStream instream = classLoader.getResourceAsStream("store.jks"); 
keyStore.load(instream, "JKSpassword".toCharArray()); 
instream.close(); 

從那裏除了當你loadTrustMaterialSSLContextBuilder

SSLConnectionSocketFactory socketFactory = new SSLConnectionSocketFactory(
    new SSLContextBuilder() 
     .loadTrustMaterial(keyStore, new 
     TrustSelfSignedStrategy()).build()); 

希望這有助於相同。

相關問題