SSL-сертификаты сервера и клиента с одинаковым открытым ключом - PullRequest
0 голосов
/ 11 июня 2018

Я хочу защитить сокетную связь в Java-приложении (архитектура клиента и сервера).Я хочу добиться этого с помощью SSL.

Согласно моим исследованиям, мне понадобится SSL-сертификат (пара ключей - private и public).Я узнал, как создать сертификат с помощью библиотеки Bouncy Castle.

Мои вопросы:

  1. Я предполагаю, что на стороне сервера сертификат должен содержать как закрытый, так и открытый ключ, а на стороне клиента сертификат должен содержать толькооткрытый ключ сервера.Это правильно?
  2. Если вышеприведенное понимание верно, как мне сгенерировать два сертификата, один для сервера, использующего как открытый, так и закрытый ключ, а другой - для клиента только с открытым ключом.

Может кто-нибудь дать мне несколько указаний по этому поводу?

1 Ответ

0 голосов
/ 11 июня 2018

В Интернете есть несколько ресурсов, которые очень хорошо объясняют, как работает криптография с открытым ключом.Как правило, ваш сервер имеет два ресурса: закрытый ключ и сертификат.Открытый ключ содержится в сертификате.Обычно закрытый ключ защищен паролем, поэтому вашему серверу это также потребуется.

Сертификат отправляется клиенту при подключении;но клиент должен доверять этому.Чтобы это произошло, либо сертификат должен быть подписан доверенным органом, либо вам необходимо явно доверять этому сертификату в клиенте (последний случай называется самоподписанным сертификатом).

BouncyCastle - это библиотека для подобных вещей, но вы можете использовать что угодно для создания своей пары ключей.Наиболее очевидным является keytool, который приходит с Java. Читайте о создании вашей пары ключей здесь.

...