Я пытаюсь подключить Java Web API через HTTPS; однако возникает исключение:
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException
Я выполнил следующие шаги, которые я узнал из онлайн-руководств по использованию инструментов для ключей и SSL-сертификатов:
Я скопировал URL-адрес HTTPS в браузер, загрузил сертификаты SSL и установил их в браузере с помощью Internet Explorer.
Экспортировал сертификаты в путь на моем компьютере, сертификаты были сохранены как
.cer
Использовал опцию импорта keytool. Приведенная ниже команда выполнена без ошибок.
keytool -import -alias downloadedCertAlias -keystore C:\path\to\my\keystore\cacerts.file -file C:\path\of\exportedCert.cer
Мне было предложено ввести пароль в командной строке, который я ввел, а затем прошел аутентификацию.
В
cmd
окне были напечатаны некоторые данные сертификата и подписи, и мне был предложен вопрос:Доверять этому сертификату?
Я ответил да.
Отображается приглашение cmd
Сертификат добавлен в хранилище ключей
Однако после этого сообщения было отображено другое исключение:
keytool error: java.io.FileNotFoundException: C:\Program files\...\cacerts <Access Denied>
Наконец, когда я проверил хранилище ключей, сертификат SSL не был добавлен, и мое приложение выдает то же исключение, которое я получал ранее при попытке подключения:
(javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException)
источник
keytool
команду, которую вы выполнили, и ее вывод? некоторые из очевидных проблем здесь - это опечатка в-keystore
аргументе и тот факт, что keytool не смог найти хранилище ключей для импорта ключаОтветы:
Это могло произойти, если вы не запускаете командную строку в режиме администратора. Если вы используете Windows 7, вы можете запустить, ввести cmd и нажать Ctrl + Shift + Enter. Это откроет командную строку в режиме администратора. Если нет, вы также можете перейти в Пуск -> все программы -> аксессуары -> щелкните командную строку правой кнопкой мыши и выберите «Запуск от имени администратора».
источник
У меня была такая же проблема под Windows, и я мог решить ее, запустив cmd.exe от имени администратора (щелкните правой кнопкой мыши в меню «Пуск», затем «Запуск от имени администратора»).
источник
У меня была такая же проблема при импорте сертификата в локальное хранилище ключей. Всякий раз, когда я запускаю команду keytool, я получаю следующую ошибку.
Сертификат был добавлен к ошибке keytool хранилища ключей: java.io.FileNotFoundException: C: \ Program Files \ Java \ jdk1.8.0_151 \ jre \ lib \ security (доступ запрещен)
Следующее решение работает для меня.
1) убедитесь, что вы запускаете командную строку в Rus в режиме администратора
2) Измените текущий каталог на% JAVA_HOME% \ jre \ lib \ security
3) затем выполните следующую команду
keytool -import -alias "mycertificatedemo" -file "C: \ Users \ name \ Downloads \ abc.crt" -keystore cacerts
3) дать смену пароля
4) введите y
5) при успешном завершении вы увидите следующее сообщение: «Сертификат был добавлен в хранилище ключей».
Убедитесь, что вы указываете « cacerts » только в значении параметра -keystore, поскольку я давал полный путь, например «C **: \ Program Files \ Java \ jdk1.8.0_151 \ jre \ lib \ security **».
Надеюсь, это сработает
источник
Проверьте разрешения на запись в хранилище ключей.
источник
Для пользователей Mac обязательно выполните sudo и при появлении запроса сначала укажите пароль администратора, а затем пароль хранилища ключей, который обычно должен быть «changeit», если вы его не изменили.
источник
Если вы используете windows8:
command prompt
command prompt
и щелкнитеRun as administrator
. Затем выполните команду keytool.источник
Вы можете дать себе разрешение на решение этой проблемы.
Щелкните правой кнопкой мыши cacerts> выберите свойства> выберите вкладку Securit> Разрешить все разрешения для всех имен групп и пользователей.
Это сработало для меня.
источник
Я даже запускаю командную строку как администратор, но у меня это не сработало из-за ошибки ниже.
Если путь к keytool отсутствует в ваших системных путях, вам нужно будет использовать полный путь для использования keytool, который
Итак, команда должна быть такой
это сработало для меня.
источник
Я тоже получил эту ошибку, даже если запустил cmd как администратор.
Основная причина: файл из VCS (subversion, perforce и т. Д.), И когда я проверил свойства этого файла, его «Атрибуты» доступны только для чтения .
Итак, решение:
источник
РЕШИТЬ
источник
Вы можете сохранить другой диск или путь (не C) EX: D \
источник