Есть ли какой-либо метод для непосредственной загрузки сертификата и закрытого ключа в SSLServerSocket (Java) программным способом? - PullRequest
2 голосов
/ 16 июня 2011

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

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

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

Будет полезна любая ссылка на образец.

1 Ответ

2 голосов
/ 16 июня 2011

Как я уже говорил в комментарии, в ответе на один из ваших ранее вопросов вам нужно будет использовать 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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...