Импорт доверенного сертификата Java в JRE

6

Мне нужно установить сертификат из приложения Java для многих людей. Я хочу использовать программу одним щелчком мыши или пакетный файл, чтобы импортировать его в качестве доверенного сертификата (в Панель управления-> Безопасность-> Сертификат). Тогда им не нужно нажимать всегда разрешать первый раз, когда они используют приложение.

Я извлек необходимый сертификат как a, так .csrи a .cer( .csrчерез панель управления и .cerчерез keytool). Теперь мне нужно вернуть один из них без каких-либо нажатий в меню.

Я не очень понимаю документацию по импорту .cerс помощью keytool и хотел бы привести пример. Или есть более простой способ, чем использовать keytool?

Zalastax
источник

Ответы:

2

Несколько примеров того, как это сделать с помощью "keytool"

Вторая ссылка здесь имеет пример командного файла:

@echo off
echo
echo This will import an X.509 SSL certificate into the keystore for the JVM
specified
echo
echo Press Control+C to abort.
pause
SETLOCAL

rem -------------------------------------------------
rem 1) Set the path to you JVM here
rem -------------------------------------------------
set JAVA_HOME=C:\j2sdk1.4.2_05

rem -------------------------------------------------
rem 2) SET THE CERTIFICATE NAME AND ALIAS HERE
rem -------------------------------------------------
set CERT_NAME=mycert.cer
set CERT_ALIAS=mycert

rem -------------------------------------------------
rem 3) SET THE KEYTOOL PASSWORD HERE
rem -------------------------------------------------
set KEYTOOL_PASS=changeit

rem -------------------------------------------------
rem DO NOT EDIT BELOW THIS LINE
rem -------------------------------------------------
set JAVA_SECURITY=%JAVA_HOME%\jre\lib\security
set CERT=%JAVA_SECURITY%\%CERT_NAME%
%JAVA_HOME%\jre\bin\keytool -import -trustcacerts -keystore %JAVA_SECURITY%\cacerts
-storepass %KEYTOOL_PASS% -noprompt -alias %CERT_ALIAS% -file %CERT%
ENDLOCAL
pause

Какую часть вы испытываете проблемы с пониманием? Есть ли определенный раздел, который не имеет смысла? Вам нужна помощь с командным файлом? Где конкретно вы застреваете? Возможно, я могу помочь более конкретно.

jefflunt
источник
Спасибо за поиск в Google :( Как я уже сказал, у меня были проблемы с пониманием, как его получить.
Zalastax
Я обновил свой ответ.
Джеффлунт
На второй странице, я думаю, главной проблемой была читаемость страницы. Я посмотрю, смогу ли я
справиться со
У меня сейчас проблема в том, что я не знаю пароль. Что должно войти? Я ничего не делал с сертификатом после того, как вытащил его из keytool.
Заластакс
Я нашел пароль, посмотрев в командный файл. Но ничего не происходит. После ввода правильного пароля я не получаю никаких ошибок, но cmd, похоже, тоже ничего не делает. Сертификат, кажется, там тоже нет.
Заластакс
0

Концепция цепочки доверия для Java keytool и подписанных приложений предполагает, что пользователь подтвердит доверие, приняв утвердительное действие. В этом случае пользователь импортирует открытый ключ, связанный с издателем кода, в свое хранилище ключей, для чего требуется, чтобы у него было хранилище ключей Java и пароль, связанный с ним. См. Http://java.sun.com/developer/onlineTraining/Programming/JDCBook/signed.html раздел с указанием -

6: Импорт сертификата в качестве доверенного сертификата

Рэй загружает SSignedApplet.jar и CompanyCer.cer в свой домашний каталог. Теперь Ray должен> создать базу данных хранилища ключей (raytore) и импортировать в нее сертификат, используя псевдоним> company. Рэй использует keytool в своем домашнем каталоге, чтобы сделать это: ...

Это представляет значительную проблему, поэтому поведение по умолчанию состоит в том, чтобы запускать подписанные приложения с диалоговым окном OK, к которому вы пытаетесь обратиться. Удаленный доступ / создание хранилищ ключей Java для других противоречит проекту безопасности.

zedman9991
источник
0

У нас была похожая проблема, когда мы пытались избежать всплывающих окон с сертификатами на подписанных апплетах Мы нашли исправление, это не красиво, но, похоже, до сих пор работало. У каждого пользователя есть хранилище ключейrust.certs (в зависимости от операционной системы, в которой он находится <username>/AppData...Sun/Java/Deployment/trusted.certs), которое генерируется при первом обращении к апплету на данном компьютере. Вы можете сделать так, чтобы скрипт запуска заменял этот файл для каждого пользователя из центрального места. Чтобы создать новый trusted.certsфайл, мы только что приняли сертификаты на одном компьютере, который нам нужен, и затем скопировали весь этот trusted.certsсклад ключей на новый компьютер.

Загрузка в хранилище ключей центральных сертификатов для JRE у нас не сработала, поэтому мы пошли другим путем. Это ужасно, и если у вас есть пароль к этому хранилищу ключей, вы также можете установить его с помощью пакетного скрипта, как описано выше, но мы это сделали.

Этот подход был наиболее целесообразным для нас, поскольку он работал для каждого пользователя по отдельности, и поскольку он привязан к входу в систему, он позволяет осуществлять централизованное администрирование и массовые обновления.

Скотт Тейлор
источник
0

В C:\Windows\Sun\Java\Deploymentсоздать файл с именем deployment.config.

Содержимое этого файла должно быть:

deployment.system.config=file:///C:/Windows/Sun/Java/Deployment/deployment.properties
deployment.system.config.mandatory=false

Создайте другой файл в том же месте с именем deployment.propertiesи включите эту строку в deploy.properties:

deployment.system.security.trusted.certs=C\:\\Windows\\Sun\\Java\\Deployment\\trusted.certs

также скопируйте доверенный сертификат из профиля пользователя со всеми необходимыми сертификатами c:\windows\sun\java\deployments.

Все сертификаты, содержащиеся в этом файле, теперь отображаются на панели управления Java в разделе «Системные / доверенные сертификаты».

Вы также можете сделать это с большинством других свойств Java, включив их в deployment.propertiesфайл, например:

deployment.javaws.autodownload=NEVER
deployment.javaws.autodownload.locked
deployment.security.level=MEDIUM
deployment.security.level.locked
deployment.security.mixcode=HIDE_RUN
deployment.security.mixcode.locked
deployment.insecure.jres=NEVER
deployment.insecure.jres.locked
deployment.expiration.check.enabled=false
deployment.expiration.check.enabled.locked
deployment.webjava.enabled=true
deployment.webjava.enabled.locked

Первая строка устанавливает свойство, вторая (с .lockedв конце) не позволяет пользователям изменять свойства в панели управления Java.

Вы также можете управлять списком исключений сайта, создав файл в том же месте с именем exception.sites и добавив веб-адреса в этот файл (по одному сайту в строке) и включив эту строку в deployment.properties:

deployment.user.security.exception.sites=C\:\\Windows\\Sun\\Java\\Deployment\\exception.sites

эта ссылка объяснит большинство настраиваемых свойств:

http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/jcp/properties.html

Ник Столл
источник