签署Java部署规则使用AD证书服务设置JAR

我负责将Java 7 Update 55和Java部署规则集一起部署到所有Active Directory Windows客户端。 我设法获得了一个稳定的Java软件部署设置,但是我现在正在努力部署Deployment Rule Set,以便能够正确configurationJava。 我正在签署DeploymentRuleSet.jar文件。 我有一个Active Directory证书服务服务器将证书分发给所有客户端,我想使用此CA颁发的证书。

每次我通过这个链接中的步骤,我复制我签署的DeploymentRuleSet.jar文件到客户端,并尝试运行一个允许的Java小程序,我总是得到错误:“无法validation自签署的部署规则集jar ”。

这里是我已经完成的行动,我认为应该这样做,但不是:

  1. 我根据这里提供的模板创build了我的ruleset.xml文件。
  2. 我下载并安装了JDK v1.7.0.60。
  3. 我将ruleset.xml文件复制到JDK的bin文件夹中。
  4. 我通过发出以下jar -cvf DeploymentRuleSet.jar ruleset.xml创build了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. 我将私钥rename myp12file.p12 myp12file.pfx于Windows的扩展名: rename myp12file.p12 myp12file.pfx
  9. 我确认我的CA有一个有效的CodeSigning模板。
  10. 我使用模板签署了CSR: C:\Windows\system32\certreq.exe -submit -attrib "CertificateTemplate:GeneralCodeSigning" csr.csr mykey.cer myp12file.pfx
  11. 我将RDP交给CA,并使用“根证书颁发机构”的证书模板将计算机个人存储中的证书导出。 我相信这是“根CA”证书。 我将它作为ca-cert.cer保存在JDK的bin文件夹中。
  12. 我将签名密钥和根CA证书导入密钥库: .\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}将签名密钥附加到根CA证书 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. 我将根CA导入密钥库: .\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. 我向客户端请求了来自CA的用户代码签名证书并安装了它。
  19. 我打开了Java控制面板,并转到安全选项卡。 我确认我有“查看活动部署规则集”链接。
  20. 我点击了“Java控制面板”和“系统”选项卡上的“pipe理证书”。 然后,我将证书types更改为Signer CA,但我无法find在此处创build的任何证书。 它应该在这里的某个地方?

这是当我去了一个应该被允许的url,并收到自签名证书问题。 你可以说,我已经过了很多次了。 我很感激任何帮助。

一些你需要做的事情。

  • 首先,在Java JVM的信任存储中,在PKI中拥有根CA的证书
    • 代码将被执行的地方以及代码签名的地方,默认情况下是%JAVAHOME%/ lib / security / cacerts
      • 在Windows上,这通常是%PROGRAMFILES%\ Java \ jre7 \ lib \ security \ cacerts
    • 此外,它应该在任何您将执行该代码的框中的系统信任存储
      • Windows: mmc.exe – >证书 – >计算机帐户 – >受信任的根证书颁发机构
      • RHEL: / etc / pki / tls / certs /
  • 其次,确保您的代码签名证书设置为签名代码
    • 它应该有扩展密钥用法“代码签名”(这可能在数字上表示为OID 1.3.6.1.5.5.7.3.3存在并设置为true)
    • 它应该有主要用途包括数字签名
    • 它应该将基本约束“CA”设置为false(这也可以被列为“Subject Type = End Entity”),并且“critical”设置为“true”
    • 它应该有一个列出的CDP(CRL分发点),并且应该指向一个有效的HTTP或者LDAP URL(CRL可用)(这可以让你明确地不信任签名后发现不合适的代码)