我正在寻找ResteasyClientBuilder的文档,其中可以为2路SSL握手/身份验证指定客户端密钥库。
有一种方法keystore()
用于指定密钥库(路径+密钥库密码)以及客户端证书的私钥。但是,如何指定要使用的密钥的别名?
鉴于ResteasyClient利用HttpClient,我在Apache的SSLSocketFactory
构造函数中看到了同样的问题。
在任何一个框架中是否都可以指定别名?此客户端密钥库是否仅需要一个证书对?我看不到任何在任何地方指定别名的选项。
答案 0 :(得分:0)
如果可以使用Apache HttpComponent,可以通过向PrivateKeyStrategy
提供SSLContextBuilder
来指定要使用的别名。
private SSLContext createContext(String keyStorePath, String keyStorePassword, String privateKeyAlias) {
final char[] password = keyStorePassword.toCharArray();
// This keyStore could also come from `file.toURI().toURL();`
final URL keyStore = Application.class.getClassLoader().getResource(keyStorePath);
return SSLContextBuilder.create()
.loadKeyMaterial(keyStore, password, password, (aliases, socket) -> privateKeyAlias)
.loadTrustMaterial(keyStore, password)
.build();
}
如果需要使用上下文连接到多个端点,则可以更改功能(alias, socket) -> "aliasToUse"
以适合您的需求。