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

时间:2012-10-22 16:41:19

标签: java netty ssl

在我当前的基于netty(3.5.2)的服务器I am able to ask the client for a certificate using TLS renegotiation中。根据资源的类型,我想向客户询问一组不同的证书。这可以通过服务器正确发送TLS CertificateRequest signal with the certificate_authorities field来完成。我想在服务器上区分的两组资源是:

  1. 默认:询问已由X509TrustManager已知的CA签名的客户端证书的资源
  2. 希望查看用户任何证书的资源 - 这对于旨在帮助调试客户端证书的服务非常有用(向我发送您拥有的任何证书,我会告诉您它是否符合我们所知道的所有标准主题)
  3. 在Java中,可信CA的列表由X509TrustManager.getAcceptedIssuers()方法设置。但是一旦设置了SSLContext似乎没有办法改变这一点。我期望从SSLParameters class可以获得一些选项,但是没有方法允许至少设置空certificate_authorities列表。

    允许这种情况的一种不令人满意的方法是为空请求的证书颁发机构打开一个新端口,并通过将它们分成这些不同的端口来区分资源。是否有人知道要避免打开新端口?

1 个答案:

答案 0 :(得分:0)

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