Java Rest调用具有不同的用户证书

我有一组用户证书,我想使用相应的用户证书对用户进行身份validation。

我配置服务器以启用用户身份validation。 它从浏览器工作正常。 如果有多个用户证书,它会提示我选择需要使用的证书。 我的问题是,我怎么能用java做到这一点? 我正在使用RestTemplate与服务器进行通信。

如果是单用户证书,我可以将其添加到java密钥库并使用它。 如何使用特定的用户证书进行特定的rest呼叫?

这里使用的标准术语是“客户端证书”,因此您可能会有更多的运气谷歌搜索,例如“RestTemplate客户端证书”。

这是来自另一个 Stack Overflow答案的一些复制/粘贴代码:

KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType()); keyStore.load(new FileInputStream(new File("keystore.jks")), "secret".toCharArray()); SSLConnectionSocketFactory socketFactory = new SSLConnectionSocketFactory( new SSLContextBuilder() .loadTrustMaterial(null, new TrustSelfSignedStrategy()) .loadKeyMaterial(keyStore, "password".toCharArray()).build()); HttpClient httpClient = HttpClients.custom().setSSLSocketFactory(socketFactory).build(); ClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory( httpClient); RestTemplate restTemplate = new RestTemplate(requestFactory); ResponseEntity response = restTemplate.getForEntity( "https://localhost:8443", String.class);