提问者:小点点

在TLS重新协商期间更改TrustManager的接受发行者


在我当前基于netty(3.5.2)的服务器中,我能够使用TLS重新协商向客户端请求证书。根据资源的类型,我想向客户端请求一组不同的证书。这可以通过服务器发送TLS CertificateRequest信号并正确设置Certificate_Authorities字段来完成。我想在我的服务器上区分的两组资源是:

  1. 默认:请求已由X509TrustManager
  2. 已知的CA签名的客户端证书的资源
  3. 希望查看用户的任何证书的资源-这对于旨在帮助调试客户端证书的服务很有用(请将您拥有的任何证书发送给我,我会告诉您它是否符合我们所知道的有关该主题的所有标准)

在Java,受信任的CA列表由X509TrustManager.getAcceptedissuers()方法设置。但一旦设置了SSLContext,似乎就没有办法改变这一点了。我希望SSLParameters类中有一些可用的选项,但没有任何方法允许至少设置nullCertificate_Authorities列表。

允许这种情况的一种不令人满意的方法是为null请求的证书颁发机构打开一个新的端口,从而通过将资源分离到这些不同的端口来区分资源。有没有人知道有一种方法可以避免开新的港口?


共1个答案

匿名用户

您需要安装自己的TrustManager。有关详细信息,请参阅JSSE参考指南。