3 回答

TA貢獻(xiàn)1744條經(jīng)驗(yàn) 獲得超4個(gè)贊
我最近有類(lèi)似的要求。這是我使用的代碼:
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();

TA貢獻(xiàn)1878條經(jīng)驗(yàn) 獲得超4個(gè)贊
我認(rèn)為這實(shí)際上是一個(gè)重復(fù)的問(wèn)題。
請(qǐng)參閱此問(wèn)題的答案Java HTTPS client certificate authentication。

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超6個(gè)贊
在所有示例中,您需要調(diào)用loadKeyMaterial方法KeyStore
public SSLContextBuilder loadKeyMaterial(KeyStore keystore,
使用文件路徑加載 keyStore,例如:
keyStore = KeyStore.getInstance("PKCS12"); FileInputStream inputStream = new FileInputStream(new File(certPath)); keyStore.load(inputStream, certPassword.toCharArray());
添加回答
舉報(bào)