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

Подписание JAR набора правил развертывания Java с помощью служб сертификации AD

Мне поручено развернуть Java 7 Update 55 вместе с набором правил развертывания Java для всех клиентов Active Directory Windows. Мне удалось получить надежную настройку развертывания программного обеспечения Java, но сейчас я изо всех сил пытаюсь развернуть набор правил развертывания вместе с ним, чтобы можно было правильно настроить Java. Я зацикливаюсь на подписи файла DeploymentRuleSet.jar. У меня есть сервер служб сертификации Active Directory, раздающий сертификаты всем клиентам, и я хотел бы использовать сертификат, выданный этим центром сертификации.

Каждый раз, когда я прохожу через шаги эта ссылка и я копирую подписанный файл DeploymentRuleSet.jar на клиент и пытаюсь запустить разрешенный Java-апплет, я постоянно получаю сообщение об ошибке: «Не удается проверить самоподписанный jar-файл набора правил развертывания».

Вот точный порядок действий, которые я выполнил. считать должен это сделать, но не делает:

  1. Я создал свой файл ruleset.xml на основе предоставленного шаблона Вот.
  2. Я скачал и установил JDK v1.7.0.60.
  3. Я скопировал файл ruleset.xml в папку bin JDK.
  4. Я создал файл DeploymentRuleSet.jar, выполнив: jar -cvf DeploymentRuleSet.jar ruleset.xml
  5. Я создал новое хранилище ключей и ключ: .\keytool.exe -genkey -alias mykey -keyalg RSA -keysize 2048 -keystore keystore.jks -storepass changeit
  6. Я создал CSR: keytool -certreq -alias mykey -file csr.csr -keystore keystore.jks -storepass changeit
  7. Я извлек закрытый ключ из хранилища ключей: keytool -v -importkeystore -srckeystore keystore.jks -srcalias mykey -destkeystore myp12file.p12 -deststoretype PKCS12
  8. Я переименовал закрытый ключ в расширение для Windows: rename myp12file.p12 myp12file.pfx
  9. Я подтвердил, что в моем ЦС есть активный шаблон CodeSigning.
  10. Я подписал CSR с шаблоном: C:\Windows\system32\certreq.exe -submit -attrib "CertificateTemplate:GeneralCodeSigning" csr.csr mykey.cer myp12file.pfx
  11. Я подключился к центру сертификации по протоколу RDP и экспортировал сертификат в личный магазин компьютера с шаблоном сертификата «Корневой центр сертификации». Я считаю, что это сертификат «корневого центра сертификации». Я сохранил это в папке bin JDK как ca-cert.cer.
  12. Я импортировал подписанный ключ и сертификат корневого центра сертификации в хранилище ключей: .\keytool.exe -importcert -keystore keystore.jks -file ca-cert.cer -alias CARoot -storepass changeit
  13. Я подписал JAR-файл: .\jarsigner.exe -keystore keystore.jks -storepass changeit DeploymentRuleSet.jar myKey
  14. Я добавил ключ подписи к сертификату корневого ЦС с помощью Powershell: Get-Content .\mykey.cer | % { Add-Content -Value $_ -Path .\ca-cert.cer}
  15. Я импортировал объединенные сертификаты в хранилище ключей: keytool -importcert -keystore C:\Users\user\AppData\LocalLow\Sun\Java\Deployment\security\cacerts -storepass changeit -alias mykey -file ca-cert.cer -noprompt
  16. Я импортировал корневой ЦС в хранилище ключей: .\keytool.exe -importcert -keystore C:\users\user\AppData\LocalLow\Sun\Java\Deployment\security\cacerts -storepass changeit -alias myKey -file .\ca-cert.cer -noprompt
  17. Я скопировал файл DeploymentRuleSet.jar клиенту в папку C: \ Windows \ Sun \ Java \ Deployment.
  18. Я запросил сертификат подписи кода пользователя из центра сертификации на клиенте и установил его.
  19. Я открыл панель управления Java и перешел на вкладку «Безопасность». Я подтвердил, что у меня есть ссылка «Просмотреть активный набор правил развертывания».
  20. Я щелкнул «Управление сертификатами» в панели управления Java и на вкладке «Система». Затем я изменил тип сертификата на ЦС подписывающей стороны, но я НЕ смог найти здесь сертификат, который я создал. Он должен быть где-то здесь?

Это когда я перешел по URL-адресу, который должен быть разрешен, и получил проблему с самоподписанным сертификатом. Как вы понимаете, я проходил это МНОГО раз. Буду признателен за любую помощь.

Вам нужно сделать пару вещей.

  • Во-первых, в доверенных хранилищах для java JVM есть сертификат для корневого ЦС в вашей PKI.
    • как там, где будет выполняться подписанный код, так и в поле, где вы выполняете подпись кода, которая по умолчанию будет % JAVAHOME% / lib / security / cacerts
      • В Windows это обычно будет % PROGRAMFILES% \ Java \ jre7 \ lib \ security \ cacerts
    • Также он должен быть в системном хранилище доверия для любых ящиков, где вы будете выполнять этот код.
      • Windows: mmc.exe -> Сертификаты -> Учетная запись компьютера -> Доверенные корневые центры сертификации
      • RHEL: / и т. д. / pki / tls / certs /
  • Во-вторых, убедитесь, что ваш сертификат для подписи кода настроен для подписи кодов.
    • Он должен иметь расширенное использование ключа «Подпись кода» (он может быть численно представлен как OID 1.3.6.1.5.5.7.3.3, присутствующий и установленный в true)
    • Ключевое использование должно включать цифровую подпись.
    • Он должен иметь базовое ограничение «CA», установленное на false (это также может быть указано как «Subject Type = End Entity»), а «критическое» - на «true».
    • В нем должен быть указан CDP (точка распространения CRL), который должен указывать на действительный URL-адрес HTTP или LDAP, где доступен CRL (это позволяет вам явно не доверять коду, который оказался неприемлемым после его подписания)