Ошибка 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
![введите описание изображения здесь]()