В Интернете есть несколько ресурсов, которые очень хорошо объясняют, как работает криптография с открытым ключом.Как правило, ваш сервер имеет два ресурса: закрытый ключ и сертификат.Открытый ключ содержится в сертификате.Обычно закрытый ключ защищен паролем, поэтому вашему серверу это также потребуется.
Сертификат отправляется клиенту при подключении;но клиент должен доверять этому.Чтобы это произошло, либо сертификат должен быть подписан доверенным органом, либо вам необходимо явно доверять этому сертификату в клиенте (последний случай называется самоподписанным сертификатом).
BouncyCastle - это библиотека для подобных вещей, но вы можете использовать что угодно для создания своей пары ключей.Наиболее очевидным является keytool, который приходит с Java. Читайте о создании вашей пары ключей здесь.