Java для доступа к службе https с использованием файла jks

  • Java-код для вызова удаленной веб-службы с файлом JKS.
  • Как получить доступ к авторизованной службе с использованием сертификата. и добавьте, пожалуйста, определение java keystore. Я очень новичок в этих процессах. Я получаю следующую ошибку при попытке связать с этим

    cause javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: 
    PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException
    

Я борюсь за последний месяц. Пожалуйста, сделайте все, что нужно. Простите меня за грамматическую ошибку.

Ответ 1

Сначала вам нужно получить общедоступный сертификат с сервера, к которому вы пытаетесь подключиться. Это можно сделать различными способами, например, связаться с администратором сервера и запросить его, используя openssl для его загрузки или, если это HTTP-сервер, подключиться к нему с любым браузером, просмотреть информацию о безопасности страницы и сохраняя копию сертификата. (Google должен быть в состоянии точно сказать, что делать для вашего конкретного браузера.)

Теперь, когда у вас есть сертификат, сохраненный в файле, вам нужно добавить его в хранилище доверия JVM. В $JAVA_HOME/jre/lib/security/для JDK или $JAVA_HOME/lib/security для JRE есть файл cacerts, который поставляется с Java и содержит общедоступные сертификаты известных сертификационных органов. Чтобы импортировать новый сертификат, запустите keytool как пользователь, у которого есть разрешение на запись в cacerts:

keytool -import -file <the cert file> -alias <some meaningful name> -keystore <path to cacerts file>

Скорее всего, он попросит вас ввести пароль. Пароль по умолчанию, поставляемый с java, - "changeit". Его почти никто не изменяет. После того, как вы выполните эти относительно простые шаги, вы будете уверенно общаться и с уверенностью, что разговариваете с нужным сервером и только с правильным сервером (пока они не потеряют свой закрытый ключ).