java 多个ssl证书_在Java中使用同一主机使用多个SSL客户端证书

小编典典

SSL可以向客户端提示要显示的证书。这 可能

使您可以使用一个具有多个身份的密钥存储,但是,不幸的是,大多数服务器不使用此提示功能。因此,如果您指定要用于每个连接的客户端证书,它将更加健壮。

这是SSLContext使用指定的身份和信任存储库设置示例代码。您可以重复这些步骤来创建多个上下文,每个要使用的客户端证书都需要一个上下文。每个人SSLContext都可能使用相同的信任库,但使用不同的身份库(包含要在该上下文中使用的单个客户端密钥条目)。

初始化一次所需的上下文,然后为每个连接重用正确的上下文。如果要建立多个连接,则可以利用SSL会话。

KeyManagerFactory kmf =

KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());

kmf.init(identityStore, password);

TrustManagerFactory tmf =

TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());

tmf.init(trustStore);

SSLContext ctx = SSLContext.getInstance("TLS");

ctx.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null);

稍后,您可以直接创建套接字:

SSLSocketFactory factory = ctx.getSocketFactory();

Socket socket = factory.createSocket(host, port);

或者,如果您使用的是URL类,则可以指定SSLSocketFactory发出HTTPS请求时要使用的:

HttpsURLConnection con = (HttpsURLConnection) url.openConnection();

con.setSSLSocketFactory(ctx.getSocketFactory());

Java 6有一些附加的API,可以根据您对密码套件等的喜好更轻松地配置套接字。

2020-11-13

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值