Назад |
Перейти на главную страницу
Подписание JAR набора правил развертывания Java с помощью служб сертификации AD
Мне поручено развернуть Java 7 Update 55 вместе с набором правил развертывания Java для всех клиентов Active Directory Windows. Мне удалось получить надежную настройку развертывания программного обеспечения Java, но сейчас я изо всех сил пытаюсь развернуть набор правил развертывания вместе с ним, чтобы можно было правильно настроить Java. Я зацикливаюсь на подписи файла DeploymentRuleSet.jar. У меня есть сервер служб сертификации Active Directory, раздающий сертификаты всем клиентам, и я хотел бы использовать сертификат, выданный этим центром сертификации.
Каждый раз, когда я прохожу через шаги эта ссылка и я копирую подписанный файл DeploymentRuleSet.jar на клиент и пытаюсь запустить разрешенный Java-апплет, я постоянно получаю сообщение об ошибке: «Не удается проверить самоподписанный jar-файл набора правил развертывания».
Вот точный порядок действий, которые я выполнил. считать должен это сделать, но не делает:
- Я создал свой файл ruleset.xml на основе предоставленного шаблона Вот.
- Я скачал и установил JDK v1.7.0.60.
- Я скопировал файл ruleset.xml в папку bin JDK.
- Я создал файл DeploymentRuleSet.jar, выполнив:
jar -cvf DeploymentRuleSet.jar ruleset.xml
- Я создал новое хранилище ключей и ключ:
.\keytool.exe -genkey -alias mykey -keyalg RSA -keysize 2048 -keystore keystore.jks -storepass changeit
- Я создал CSR:
keytool -certreq -alias mykey -file csr.csr -keystore keystore.jks -storepass changeit
- Я извлек закрытый ключ из хранилища ключей:
keytool -v -importkeystore -srckeystore keystore.jks -srcalias mykey -destkeystore myp12file.p12 -deststoretype PKCS12
- Я переименовал закрытый ключ в расширение для Windows:
rename myp12file.p12 myp12file.pfx
- Я подтвердил, что в моем ЦС есть активный шаблон CodeSigning.
- Я подписал CSR с шаблоном:
C:\Windows\system32\certreq.exe -submit -attrib "CertificateTemplate:GeneralCodeSigning" csr.csr mykey.cer myp12file.pfx
- Я подключился к центру сертификации по протоколу RDP и экспортировал сертификат в личный магазин компьютера с шаблоном сертификата «Корневой центр сертификации». Я считаю, что это сертификат «корневого центра сертификации». Я сохранил это в папке bin JDK как ca-cert.cer.
- Я импортировал подписанный ключ и сертификат корневого центра сертификации в хранилище ключей:
.\keytool.exe -importcert -keystore keystore.jks -file ca-cert.cer -alias CARoot -storepass changeit
- Я подписал JAR-файл:
.\jarsigner.exe -keystore keystore.jks -storepass changeit DeploymentRuleSet.jar myKey
- Я добавил ключ подписи к сертификату корневого ЦС с помощью Powershell:
Get-Content .\mykey.cer | % { Add-Content -Value $_ -Path .\ca-cert.cer}
- Я импортировал объединенные сертификаты в хранилище ключей:
keytool -importcert -keystore C:\Users\user\AppData\LocalLow\Sun\Java\Deployment\security\cacerts -storepass changeit -alias mykey -file ca-cert.cer -noprompt
- Я импортировал корневой ЦС в хранилище ключей:
.\keytool.exe -importcert -keystore C:\users\user\AppData\LocalLow\Sun\Java\Deployment\security\cacerts -storepass changeit -alias myKey -file .\ca-cert.cer -noprompt
- Я скопировал файл DeploymentRuleSet.jar клиенту в папку C: \ Windows \ Sun \ Java \ Deployment.
- Я запросил сертификат подписи кода пользователя из центра сертификации на клиенте и установил его.
- Я открыл панель управления Java и перешел на вкладку «Безопасность». Я подтвердил, что у меня есть ссылка «Просмотреть активный набор правил развертывания».
- Я щелкнул «Управление сертификатами» в панели управления 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 (это позволяет вам явно не доверять коду, который оказался неприемлемым после его подписания)