Существует ли какой-либо метод для прямой загрузки сертификата и закрытого ключа в SSLServerSocket (Java) программно?


Я из фона "с". Я пытаюсь проанализировать, как написать Java SSL сервер.

Итак, далеко примеры, которые я нашел, говорят о загрузке сертификата и private в хранилище ключей и программном связывании хранилища ключей с SSLContext, а затем создают SSLServerSocket из того же самого.

Но существуют ли какие-либо методы для прямого указания, какой сертификат должен использоваться SSLServerSocket? Кроме того, даже если я использую хранилище ключей и если есть несколько сертификатов и ключей, как могу ли я указать SSLServerSocket, который он должен использовать?

Любой пример ссылки будет полезен.

1 2

1 ответ:

Как я уже говорил в комментарии, в ответе на один из ваших вопросов ранее, вам нужно будет использовать KeyManager, чтобы сделать это.

Существуют различные способы сделать это. 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();