![](/img/trans.png)
[英]Java SSL - Connect to secure Rest Service using pkcs12 (.p12) file
[英]Using .p12 file to execute request to rest server
我試圖執行對服務器的請求,該服務器向我提供了.p12文件,以便與其余服務建立安全連接,我正在執行以下操作,以使用密鑰設置HttpClient:
SSLContext sslContext =SSLContextBuilder
.create().loadKeyMaterial(ResourceUtils.getFile("classpath:keystore/file.p12"), "secret".toCharArray(), "secret".toCharArray())
.build();
return HttpClientBuilder
.create()
.setConnectionManager(connManager())
.setSSLContext(sslContext)
.setDefaultRequestConfig(requestConfig())
.build();
當我使用OAuth2RestOperations執行請求時,我得到了:
401 , Non existing certificate or invalid
我最近有一個類似的要求。 這是我使用的代碼:
KeyStore clientStore = KeyStore.getInstance("PKCS12");
try {
clientStore.load(ResourceUtils.getFile("classpath:keystore/file.p12"), "secret".toCharArray());
} catch (IOException e) {
//handle exception
}
KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
kmf.init(clientStore, "secret".toCharArray());
KeyManager[] kms = kmf.getKeyManagers();
SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(kms, null, new SecureRandom());
SSLConnectionSocketFactory socketFactory = new SSLConnectionSocketFactory(sslContext);
HttpClientBuilder builder = HttpClientBuilder.create();
return builder.setSSLSocketFactory(socketFactory).build();
我認為這實際上是一個重復的問題。
有關此問題的Java HTTPS客戶端證書認證,請參閱此答案 。
在所有示例中,您都需要使用KeyStore
調用loadKeyMaterial方法
public SSLContextBuilder loadKeyMaterial(KeyStore keystore,
使用文件路徑加載keyStore,例如:
keyStore = KeyStore.getInstance("PKCS12"); FileInputStream inputStream = new FileInputStream(new File(certPath)); keyStore.load(inputStream, certPassword.toCharArray());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.