Приложение Java, использующее соединение Https: «Ошибка соединения отклонена» - PullRequest
2 голосов
/ 03 апреля 2012

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

Я передаю данные по SSL-соединению (Https). Он работает нормально в моей системе. Но когда я пытаюсь запустить jar в другой системе, я получаю сообщение «Ошибка соединения отклонена».

Примечание. Работа jar в другой системе, которая передает данные по http-соединению, работает нормально.

Я прошел по этой ссылке , которая предложила мне создать файл «jssecacerts» и вставить его в папку $ JAVA_HOME / jre / lib / security «другой системы». Но я все еще получаю ту же ошибку. Почему это не работает ??

1 Ответ

1 голос
/ 03 апреля 2012

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

keytool -importcert -trustcacerts -file "path-to-public-cert" -keystore JAVA_HOME / jre / lib / security /cacerts

он запросит пароль хранилища ключей. Пароль хранилища ключей по умолчанию - "changeit"

Вы можете получить общедоступный сертификат, открыв свой URL в веб-браузере (например, Chrome), щелкнув значок наначало URL -> нажмите информацию о сертификате -> вкладка сведений -> нажмите кнопку экспорта.


Лучшим подходом будет:

  • создать хранилище ключей, используя «keytool» доступнов JAVA_HOME / bin
  • Импортируйте публичный сертификат вашего сервера в это хранилище ключей.
  • связывает хранилище ключей с вашим приложением.
  • создайте файл bat / sh для запуска вашего jar-файла, предоставив параметр для команды java -Djavax.net.ssl.trustStore = / path-to-your-keystore

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

...