Ошибка Java Keytool после импорта сертификата, "ошибка keytool: java.io.FileNotFoundException & Access Denied"

Я пытаюсь подключить Java Web API через HTTPS; однако выбрано исключение:

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException

Я выполнил следующие шаги, которые я узнал из онлайн-руководств keytool и SSL cert:

  • Я скопировал 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)

Ответ 1

Это может произойти, если вы не запускаете командную строку в режиме администратора. Если вы используете Windows 7, вы можете запустить, введите cmd и нажмите Ctrl + Shift + enter. Это откроет командную строку в режиме администратора. Если нет, вы также можете перейти к запуску → все программы → аксессуары → щелкнуть правой кнопкой мыши командную строку и щелкнуть "Запуск от имени администратора".

Ответ 2

У меня была такая же проблема в Windows, и я смог ее решить, запустив cmd.exe в качестве администратора (щелкните правой кнопкой мыши в меню "Пуск", затем "Запуск от имени администратора" ).

Ответ 3

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

Сертификат был добавлен в хранилище ключей keytool error: 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" файл "C:\Users\name\Downloads\abc.crt" -keystore cacerts

3) введите пароль

4) введите y

5) вы увидите следующее сообщение об успешном "Сертификат был добавлен в хранилище ключей"

Убедитесь, что вы указываете " cacerts" только в значении параметра -keystore, поскольку я передавал полный путь, как "C **:\Program Files\Java\jdk1.8.0_151\JRE\Lib\безопасность **".

Надеюсь, что это сработает

Ответ 4

Проверьте разрешения на запись в хранилище ключей.

Ответ 5

Для пользователей Mac убедитесь, что sudo и при запросе сначала введите пароль администратора, за которым последует пароль хранилища ключей, который обычно должен быть "changeit", если вы его не изменили.

Ответ 6

Если вы используете windows8:

  • Нажмите кнопку "Пуск"
  • В поле поиска введите command prompt
  • В результате щелкните правой кнопкой мыши command prompt и выберите Run as administrator. Затем выполните команду keytool.

Ответ 7

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

'keytool' is not recognized as an internal or external command,
 operable program or batch file.

Если путь к ключевому инструменту отсутствует в ваших системных путях, вам нужно будет использовать полный путь для использования keytool, который находится

C:\Program Files\Java\jre<version>\bin

Итак, команда должна быть как

"C:\Program Files\Java\jre<version>\bin\keytool.exe" -importcert -alias certificateFileAlias -file CertificateFileName.cer -keystore cacerts

который работал у меня.

Ответ 8

У меня та же проблема в Windows 10 при использовании PowerShell, но работает, если я использую cmd.

Ответ 9

Сертификат был добавлен в keytool хранилища ключей: ошибка: java.io.FileNotFoundException: (доступ запрещен)

Я получаю эту ошибку. Я попытался запустить в режиме администратора. Это не сработало. Я скопировал папку jdk в другое место и запустил команду в каталоге keytool.exe. Тогда это сработало.

Ответ 10

Вы можете дать себе разрешение на устранение этой проблемы.

Щелкните правой кнопкой мыши на cacerts > выберите свойствa > выберите вкладку Securit > Разрешить все разрешения для всех имен групп и пользователей.

Это сработало для меня.

Ответ 11

решаемые

  • Просто запустите CMD в качестве администратора.
  • Убедитесь, что вы используете правильный пароль доверия.

Ответ 12

Вы можете сохранить диск или путь (не C) EX: D\

C:\Program Files\Java\jre1.8.0_101\bin>keytool -genkey -alias server -keyalg RSA -keysize 2048 -keystore D:\myserver.jks -dname "CN=myserver,OU=IT-WebDev, O=TIACHOP, L=HCM, ST=0753, C=VN" && keytool -certreq -alias server -file D:\myserver.csr -keystore D:\myserver.jks

введите описание изображения здесь