it-swarm.com.ru

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

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

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

Я выполнил следующие действия, которые я узнал из интерактивных руководств по keytool и сертификатам SSL:

  1. Я скопировал URL-адрес HTTPS в браузер, загрузил сертификаты SSL и установил их в браузере с помощью Internet Explorer.

  2. Экспортировал сертификаты в путь на моем компьютере, сертификаты были сохранены как .cer

  3. Использовал параметр импорта keytool. Команда ниже выполнена без ошибок.

    keytool -import -alias downloadedCertAlias -keystore C:\path\to\my\keystore\cacerts.file -file C:\path\of\exportedCert.cer
    
  4. В командной строке мне предложили ввести пароль, который я ввел, после чего я прошел аутентификацию. 

  5. Окно cmd напечатало некоторые данные сертификата и подписи, и мне был предложен вопрос: 

    Доверять этому сертификату?

    Я ответил да.

  6. Приглашение CMD отображается 

    Сертификат был добавлен в хранилище ключей

    Однако после этого сообщения появилось еще одно исключение:

    keytool error: Java.io.FileNotFoundException: C:\Program files\...\cacerts <Access Denied>
    

Наконец, когда я проверял хранилище ключей, сертификат SSL не был добавлен, и мое приложение выдает то же исключение, которое я получал ранее при попытке подключения:

(javax.net.ssl.SSLHandshakeException:Sun.security.validator.ValidatorException)
99
cyber101

Это может произойти, если вы не запускаете командную строку в режиме администратора. Если вы используете Windows 7, вы можете запустить, набрать cmd и нажать Ctrl + Shift + enter. Откроется командная строка в режиме администратора. Если нет, вы также можете перейти в «Пуск» -> «Все программы» -> «Аксессуары» -> щелкните правой кнопкой мыши командную строку и нажмите «Запуск от имени администратора». 

222
Sharan Rajendran

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

18
daniel

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

9
partha saradhi

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

Сертификат был добавлен в хранилище ключей Ошибка keytool: Java.io.FileNotFoundException: C:\Program Files\Java\jdk1.8.0_151\jre\lib\security (доступ запрещен)

Следующее решение работает для меня.

1) убедитесь, что вы запускаете командную строку в Руси в режиме администратора

2) Измените ваш текущий каталог на% Java_HOME%\jre\lib\security

3) Затем выполните команду ниже

keytool -import -alias "mycertificatedemo" -file "C:\Users\name\Downloads\abc.crt" -keystore cacerts

3) дать пароль на смену

4) введите у

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

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

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

7
Waqas Ahmed

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

2
Vineet Kothari

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

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

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

0
ery

Я даже запустил команду Prompt as Administrator, но она не сработала для меня из-за ошибки ниже.

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

Если путь к keytool отсутствует в ваших системных путях, вам нужно будет использовать полный путь для использования 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

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

0
sher17