Назад | Перейти на главную страницу

Правило развертывания Java, установленное через AD Enterprise CA

Моя цель - внедрить набор правил развертывания Java в моей организации, но я не хочу платить стороннему центру сертификации за сертификат подписи кода, когда у нас есть работающий ЦС, работающий через Active Directory. Я выполнил то, что, по моему мнению, является правильной процедурой для достижения этой цели, однако, когда я наконец запускаю любой Java-апплет, я получаю следующую ошибку:

Невозможно проверить самоподписанный jar-файл набора правил развертывания

Я выполнил следующие шаги:

  1. Экспортировал наш корневой сертификат CA
  2. Импортированный корневой сертификат в cacerts в пути установки JRE
  3. Импортированный корневой сертификат в личное хранилище ключей
  4. Создан CSR с помощью keytool для нового сертификата с личным хранилищем ключей
  5. Отправлено CSR в центр сертификации предприятия с помощью certreq с шаблоном «Подписание кода»
  6. Импортировал этот сертификат в личное хранилище ключей
  7. Создал очень простой набор правил развертывания и скомпилировал его в банку
  8. Подписал банку сертификатом в личном хранилище ключей с шага 6
  9. Скопировал подписанный jar в \ Windows \ Sun \ Java \ Deployment \

Все вышеперечисленные шаги были выполнены без ошибок - ничего о недействительных цепочках сертификатов и т.п. Я вижу сертификат корневого ЦС на панели управления Java, и когда я нажимаю ссылку «Набор правил развертывания» на панели управления и просматриваю его сертификат, я вижу сертификат из шага 6 и его родительский ЦС, оба из которых имеют будущие даты истечения срока действия. и правильная информация, насколько я могу судить. Но я все равно получаю ошибку проверки при запуске любого апплета

Итак - это просто невозможно, и за сертификат нужно платить? Или я (надеюсь) что-то неправильно делаю? Если у кого-то есть понимание, это будет очень признательно, спасибо!

Исправление найдено.

У нас была точно такая же проблема. Я пробовал все, что было сказано выше, и ничего не работает Похоже, что Chrome неправильно использует диспетчер сертификатов Windows или, по крайней мере, не проверяет подпись из нашего корпоративного центра сертификации. Я безуспешно пытался добавить наш сертификат корневого ЦС и наш сертификат подчиненного ЦС во все системные хранилища ключей.

Проблема в том, что Chrome смотрит только на хранилища ключей пользователя, а не на системные хранилища ключей по какой-то странной причине. После того, как я добавил сертификат RootCA в USER SIGNER CA, он заработал.

Не работает: %JAVA_HOME%\lib\security\cacerts

Работает: %USERPROFILE%\AppData\LocalLow\Sun\Java\Deployment\security\trusted.cacerts

Google или JAVA должны исправить эту проблему.

Теперь пора написать сценарий инъекции для наших пользователей.

Моя проблема заключалась в том, что новое обновление Java не удалило старый DeploymentRuleSet.jar, который использовался только некоторыми предыдущими версиями и который в моем случае находится по адресу:

C:\Windows\Sun\Java\Deployment\DeploymentRuleSet.jar

Файл в этой папке не зависит от того, где находится папка установки Java, и даже после того, как Oracle удалил имя Sun из Java (и, таким образом, изменил некоторые расположения файлов в более новых версиях Java), указанный выше файл остался в системе, и казалось, что новые версии Java продолжают его использовать.

После того, как Oracle удалила среднюю настройку безопасности для Java-апплетов, все, что связано с Java, перестало работать, просто сообщалось, что «Невозможно проверить банку набора правил», и никакие решения, предоставленные в Интернете, не помогли.

Я нашел эту папку, просканировав реестр на наличие строки Java, чтобы очистить все, что связано с Java, из системы mu и выполнить чистую установку, и оказалось, что это была проблема. Почему последние версии Java продолжали использовать этот файл?

Поскольку я удалил этот файл jar из системы (на трех моих компьютерах это была та же проблема в Windows 7, как 32-битной, так и 64-битной), Java работает без проблем, но я нигде в Интернете не нашел этого решения.

Оказывается, это происходит только в Chrome и Firefox, но не в IE. Я не тестировал в Opera или Safari. Диспетчер сертификатов Chrome вызывает диспетчер сертификатов Windows, который, конечно, уже включает сертификат нашего корпоративного ЦС, и добавление этого сертификата в диспетчер сертификатов Firefox, похоже, не имеет никакого эффекта. Однако набор правил развертывания отлично работает в IE.

Я использую Chrome только потому, что мне удобнее работать с его инструментами разработчика, чем с IE - наши пользователи используют IE, и если вы используете корпоративный центр сертификации Windows и подключаетесь к старым устаревшим системам с сочетанием Java и ActiveX, скорее всего, ваши пользователи тоже. Я собираюсь отметить это как ответ, поскольку переход на IE у меня работает, но я надеюсь, что в будущем можно будет найти какое-то решение для других браузеров.

Проблема в том, что сертификата нет в файле Java cacerts. Проблема объясняется в документе My Oracle Support «Как работать с сертификатами от недоверенных центров сертификации (Doc ID 1604086.1)», руководство по подписанию кода Java, или сообщение в блоге самоподписанный для известного сообщества.

По сути, вам необходимо импортировать сертификат вашего CA в файлы cacerts ваших клиентских машин. В итоге я выполнял такую ​​команду после каждой установки JRE перед копированием DeploymentRuleSet.jar:

%JAVA_HOME%\bin\keytool.exe -importcert -keystore %JAVA_HOME%\lib\security\cacerts -storepass changeit -alias YOURCA -noprompt -file \path\to\root\certificate.cer

Вам нужно будет ввести эту команду для правильной области установки:

  • C: \ Program Files \ Java \ jre # - Для большинства пользователей это будет использоваться браузерами, запускающими RIA.
  • C: \ Program Files \ Java \ jdk1. #. 0 _ # \ jre - для систем разработки, создающих программное обеспечение и работающих с помощью инструментов разработчика.

Я много боролся с одной и той же проблемой и нашел решение. Решение заключалось в том, чтобы импортировать мой сертификат в хранилище сертификатов в консоли Java под типом сертификата «ЦС подписывающей стороны». Затем я смог запускать свои самозаверяющие апплеты также в Firefox и Chrome.