1

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

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

在 Java 中,受信任的 CA 列表由X509TrustManager.getAcceptedIssuers()方法设置。但是一旦设置 SSLContext 似乎没有办法改变它。我希望SSLParameters 类可以提供一些选项,但是没有一种方法可以至少设置空certificate_authorities列表。

一种不令人满意的方法是为空请求的证书颁发机构打开一个新端口,从而通过将资源分隔到这些不同的端口来区分这些资源。是否有任何人知道避免打开新端口的黑客行为?

4

1 回答 1

0

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

于 2012-10-22T22:44:10.917 回答