Ошибка Java Keytool после импорта сертификата, " ошибка keytool: java. io. FileNotFoundException & Access Denied"
Я пытаюсь подключить Java Web API через HTTPS; однако возникает исключение:
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException
я последовал за следующие действия, которые я узнал из онлайн ключей и SSL-сертификат-уроки:
Я скопировал HTTPS URL в браузер, загрузил SSL-сертификаты и установил их в браузере с помощью Internet Explorer.
экспортировать сертификаты в путь на моем компьютере, сертификаты были сохранены как
.cer
используется опция импорта keytool. Приведенная ниже команда выполнена без каких-либо ошибок.
keytool -import -alias downloadedCertAlias -keystore C:pathtomykeystorecacerts.file -file C:pathofexportedCert.cer
мне было предложено ввести пароль в командной строке, который я ввел, после чего я был аутентифицирован.
The
cmdокно напечатало некоторые данные сертификата и подписи, и мне был задан вопрос:
доверять этому сертификату?
Я ответил да.
отображается командная строка
сертификат был добавлен в хранилище
однако после этого сообщения, другое исключение было показано:
keytool error: java.io.FileNotFoundException: C:Program files...cacerts <Access Denied>
наконец, когда я проверил хранилище ключей, сертификат SSL не был добавлен, и мое приложение дает то же исключение, которое я получал ранее при попытке подключения:
(javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException)
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:
- Нажмите кнопку Start
- в поле поиска введите
command prompt- в результате щелкните правой кнопкой мыши
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 > разрешить все разрешения для всех групп и имен пользователей.
Это работает для меня.
решить
- просто запустите CMD от имени администратора.
- убедитесь, что вы используете правильный пароль 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

Comments