2

我来自“C”背景。我正在尝试分析如何编写 Java SSL Server。

因此,到目前为止,我发现的示例都在讨论加载证书和私有密钥存储以及以编程方式将 KeyStore 关联到 SSLContext,然后从相同创建 SSLServerSocket。

但是,有什么方法可以直接提到 SSLServerSocket 应该使用哪个证书?此外,即使我使用密钥库并且如果有多个证书和密钥,我如何向 SSLServerSocket 指定它应该使用哪一个?

任何示例链接都会有所帮助。

4

1 回答 1

2

正如我在评论中所说,在回答您之前的一个问题时,您需要使用 aKeyManager来执行此操作。

有多种方法可以做到这一点。jSSLutils是一个库,可以使它更方便一些(但您也可以更手动地完成它)。FixedServerAliasKeyManager有一个示例。最短的方法之一是使用这样的东西:

X509SSLContextFactory sslContextFactory = new X509SSLContextFactory();
// By default, this would use the keystore passed with the usual system properties.

sslContextFactory.setKeyManagerWrapper(
    new FixedServerAliasKeyManager.Wrapper("the-alias-you-want"));
// You could read the alias name from a custom system property, for example.

SSLContext sslContext = sslContextFactory.buildSSLContext("TLS");
SSLServerSocketFactory sslServerSocketFactory = sslContext.getServerSocketFactory();
于 2011-06-16T19:07:33.037 回答