Как добавить сертификат сервера в Java-приложение в Eclipse
У меня есть серверное приложение, которое использует:
import javax.net.ssl.SSLServerSocket;
import javax.net.ssl.SSLServerSocketFactory;
import javax.net.ssl.SSLSocket;
Это Java-приложение, которое представляет собой сам сервер - я не использую виртуальные серверы и не являюсь веб-приложением. Предполагается получать соединения от клиентских приложений и обрабатывать их запросы. Промежуточный слой между клиентскими приложениями и базой данных.
При запуске он работает, но продолжает рассылать спам (причина while (true) {}) этой ошибки:
javax.net.ssl.SSLException: No available certificate or key corresponds to the SSL cipher suites which are enabled.
at com.sun.net.ssl.internal.ssl.SSLServerSocketImpl.checkEnabledSuites(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLServerSocketImpl.accept(Unknown Source)
Итак, я просмотрел несколько руководств по созданию SSL-сертификатов и создал сертификат, используя следующие команды:
keytool -genkey -alias serverprivate -keystore servestore -keyalg rsa -keysize 2048
keytool -export -alias serverprivate -keystore servestore -rfc -file server.cer
И импортировал его в мое локальное хранилище сертификатов, чтобы я мог проверить его с помощью моего клиентского приложения:
keytool -import -alias trustservercert -file server.cer -keystore clienttruststore
Все это было сделано в моем каталоге $JAVA_HOME\bin. Я также обновил мой файл eclipse.ini
-vm
$JAVA_HOME\bin\javaw.exe
поэтому eclipse будет использовать мою виртуальную машину jdk7 для запуска приложений.
В то же время я пытался копировать server.cer
а также servestore
файлы в $ECLIPSE_HOME и домашние каталоги приложений.
Результат: то же сообщение об ошибке. Это не мешает запуску приложения, но остается.
Буду очень признателен за помощь здесь. Что я делаю неправильно? Может быть, есть классное, подробное, дружественное новичку руководство по созданию приложений с SSL, которое я не смог найти?
1 ответ
Вы должны добавить эти параметры в ваш jvm Start up.
-Djavax.net.ssl.trustStore="<path to truststore>"
-Djavax.net.ssl.trustStorePassword=password
Если вам нужно больше информации о Java и SSL, взгляните на это.