如何使用 Apache Httpclient 3 检索 Websphere TrustStore

我正在使用 Apache Httpclient (commons httpclient 3.1)。到目前为止,我们通过指定 Keystore 和 Trustsore 文件的物理路径来进行客户端调用。同时,这些也在 Websphere 8.5 中进行了配置。

例如在:SSL 证书和密钥管理 > 密钥库和证书 > CellDefaultTrustStore > 签名者证书

如何在我的代码中指定使用来自 webshphere 的 Keystore 和 Trustsore,而不是作为物理文件获取。

我正在使用此处指定的类似代码:


叮当猫咪
浏览 192回答 2
2回答

精慕HU

您可以检索默认 SSL 套接字工厂(将由 WAS 管理的工厂)并要求 httpclient 将其用于 https,而不是检索密钥库的路径。在以后的 httpclient 版本中,这更容易。在旧版本中,您需要为 https 和默认套接字工厂 javax.net.ssl.SSLSocketFactory.getDefault() 注册一个协议,然后配置您的客户端以使用它。

素胚勾勒不出你

您可以创建包含文件路径的命名空间绑定,以便从您的代码外部化这些路径。在 WAS 中设置两个名称空间绑定,一个用于密钥库,一个用于信任库。这是在环境 > 命名 > 命名空间绑定下的管理控制台中。设置范围以引用您的应用程序或集群。将绑定类型设置为字符串。将绑定标识符和名称相对于查找名称前缀设置为标识它的名称,例如(your application)keystorefile. 将字符串值指定为服务器上密钥库的路径。设置这些条目后,您可以使用 JNDI 来检索密钥库和信任库文件位置。Spring 有一个 JndiObjectFactoryBean,您可以使用 Configuration 类中的绑定标识符和预期类型对其进行配置,并使用限定符将其标识给 Spring:@Bean @Qualifier("fooAppKeyStorePath")public JndiObjectFactoryBean fooAppKeyStorePath() {    JndiObjectFactoryBean jndiObjectFactoryBean = new JndiObjectFactoryBean();    jndiObjectFactoryBean.setJndiName("yourBindingIdentifier");    jndiObjectFactoryBean.setExpectedType(String.class);    return jndiObjectFactoryBean;}字符串值被注入到用该限定符标记的配置方法参数中。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java