我的目标是在组织中实现Java部署规则集,但是当我们有一个通过Active Directory运行的工作CA时,我不想为代码签名证书支付第三方authentication机构。 我已经按照我认为是正确的程序来完成这一任务,但是当我最终去运行任何Java小程序时,我收到以下错误:
无法validation自签署的部署规则集jar
我遵循的步骤是:
上述步骤都完成没有错误 – 没有关于无效证书链或类似的。 我可以在Java控制面板中看到根CA证书,当我点击控制面板中的部署规则集链接并查看其证书时,我会看到来自步骤6的证书以及它的父CA,它们都有将来的过期date并据我所知可以更正信息。 但是在运行任何小程序时我仍然收到validation错误
所以 – 是不是可以做到这一点,我们必须支付证书? 还是我(希望)做错了什么? 如果有人有任何的见解,将不胜感激,谢谢!
修复发现。
我们有完全相同的问题。 我试过上面提到的一切,没有任何工作。 Chrome似乎没有正确地拉取Windows证书pipe理器,或者至less要validation我们企业CA的签名。 我尝试将我们的根CA证书和我们的从属CA证书添加到所有系统密钥库失败。
问题在于Chrome只是查看用户密钥库,而不是出于某种奇怪的原因在系统密钥库中查找。 在将USERCA证书添加到用户签名CA后,它就起作用了。
不起作用: %JAVA_HOME%\lib\security\cacerts
Works: %USERPROFILE%\AppData\LocalLow\Sun\Java\Deployment\security\trusted.cacerts
谷歌或JAVA应该解决这个问题。
现在可以为我们的用户编写脚本了。
原来,这只发生在Chrome和Firefox,但不是IE浏览器。 我还没有用Opera或Safari进行testing。 Chrome的证书pipe理器会提取Windows的证书pipe理器,这当然包括我们的企业CA的证书,并且将证书添加到Firefox的证书pipe理器中似乎没有任何影响。 但是,部署规则集在IE中完美工作。
我只使用Chrome浏览器,因为我的开发工具比IE浏览器更适合 – 我们的用户使用IE浏览器,如果您使用的是Windows企业级CA,并且很可能还会使用Java和ActiveX混合连接旧的旧系统。 我将这个标记作为答案,因为切换到IE的作品,但我希望在未来可以find其他浏览器的一些解决scheme。
问题是证书不在Java cacerts文件中。 My Oracle Support文档“如何处理来自不受信任的证书颁发机构的证书(Doc ID 1604086.1)”,“ java代码签名教程 ”或者为已知社区自签名的博客文章中解释了这个问题 。
实质上,您需要将您的CA证书导入您的客户端机器的cacerts文件。 在复制DeploymentRuleSet.jar之前,我在每个JRE安装之后最终执行了这样的命令:
%JAVA_HOME%\bin\keytool.exe -importcert -keystore %JAVA_HOME%\lib\security\cacerts -storepass changeit -alias YOURCA -noprompt -file \path\to\root\certificate.cer
您需要为正确的安装区域发出该命令:
我的问题是,新的Java更新并没有删除旧版本的DeploymentRuleSet.jar,而这个旧版本只用于以前版本,而在我的情况下则是:
C:\Windows\Sun\Java\Deployment\DeploymentRuleSet.jar
该文件夹中的文件不依赖于Java安装文件夹的位置,甚至在Oracle从Java中删除了Sun名称(并因此在较新版本的Java中更改了一些文件位置)之后,上面给出的文件仍保留在系统中, Java的新版本似乎继续使用它。
在Oracle删除Java小程序的中等安全设置之后,与Java相关的所有内容都停止运行,只是报告“无法validation规则集jar”,而且互联网上没有提供任何解决scheme。
我发现这个文件夹是通过扫描registry中的Javastring来清除与mu系统有关的Java的所有内容,并进行一个干净的安装,事实certificate这是问题所在。 为什么最新版本的Java继续使用这个文件?
由于我从系统中删除了这个jar文件(在我的3台计算机上,这是Windows 7上的同样的问题,32位和64位),Java的工作没有问题,但我没有在互联网上的任何地方find这个解决scheme。
同样的问题,我挣扎了很多,我find了一个解决scheme。 解决scheme是在证书types“签名者CA”下的Java控制台中的证书存储中导入我的证书。 然后,我就可以在Firefox和Chrome中运行我的自签名applets。