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



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



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


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




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


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



  3. используется опция импорта keytool. Приведенная ниже команда выполнена без каких-либо ошибок.



    keytool -import -alias downloadedCertAlias -keystore C:pathtomykeystorecacerts.file -file C:pathofexportedCert.cer


  4. мне было предложено ввести пароль в командной строке, который я ввел, после чего я был аутентифицирован.



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




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




    Я ответил да.




  6. отображается командная строка




    сертификат был добавлен в хранилище




    однако после этого сообщения, другое исключение было показано:



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



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



(javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException)
1060   11  

11 ответов:

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

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

проверьте права на запись в хранилище.

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

сертификат был добавлен в хранилище ошибки ключей: Ява.Ио.Исключение filenotfoundexception: файлы C:\Program \Ява\jdk1.8.0_151\среда jre\lib в\безопасность (доступ запрещен)

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

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

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

3) затем выполните следующую команду

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

3) Дайте пароль changeit

4) введите y

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

убедитесь, что вы даете "cacerts " только в хранилище ключей param значение , как я даю полный путь как "с**: программы\файлы\папку Java\jdk1.8.0_151\среда jre\lib в безопасности\**".

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

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

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

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

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

'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

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

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

вы можете дать себе разрешения, чтобы исправить эту проблему.

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

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

решить

  1. просто запустите CMD от имени администратора.
  2. убедитесь, что вы используете правильный пароль truststore

вы можете хранить orther диск или путь (не 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

enter image description here

Comments

    Ничего не найдено.