我们是一个大型组织,拥有多个为内部和外部使用而开发的应用程序。其中一个应用程序是作为Java Webstart应用程序分发的,经过大量的反复试验,我们现在已经进行了适当的签名和打包。
唯一的问题是:我们使用自签名证书。用户会看到有关未知/未经验证的供应商的警告,这不太好。
幸运的是,该组织的IT部门有一个证书可以在所有工作站上接受(我假设通过站点范围的策略)。如果我们使用此接受的证书来签署JAR并创建Webstart存档,那么一切都应该没问题。当然,IT部门不希望将接受的证书分发给所有开发人员或将其放在构建服务器上,因为这样做会违背目的并引入很多漏洞。
生成由此接受的证书签名的代码签名证书的正确方法是什么?
我的假设,基于我从普通的openssl程序中知道的,以生成在Web服务器中使用的证书:
这会有用吗?在安全性或组织障碍方面是否有任何异议?
如果以上是正确的,我需要一些指针,尤其是第3项。我发现了一个有点相关的问题:How do you sign Certificate Signing Request with your Certification Authority?。
感谢任何帮助。
答案 0 :(得分:1)
如果公司拥有自己的CA根证书,那么必须通过某些方式(例如GPO)或从所有系统安装所有系统(或者可能是他们的JRE?)将其推送到每个客户端/ relier定制图像,那么你的方法几乎是正确的:
你可以完成所有步骤,但最后一步使用OpenSSL,但这是额外的工作:
1:openssl req -newkey
或openssl genpkey|genrsa|etc
然后openssl req -new
3:openssl pkcs12 -export
加keytool -importkeystore -srcstoretype pkcs12
由于您希望最终使用Java密钥库,因此在整个过程中使用Java会更容易:
1:keytool -genkeypair
然后keytool -certreq
3:keytool -importcert
keytool
是安装了任何JRE的每台计算机上可用的程序;你不能有效地限制它。包含您的密钥对(特别是您的私钥)的密钥库文件必须受到保护。使用强密码;设置文件/目录权限/ ACL;保持安全备份;一切都很平常。
另一方面,如果公司有一个代码签名证书(和密钥),它是受信任的,因为证书来自(由)颁发的像Verisign一样知道CA,他们几乎肯定不能向您发放从属证书。只有CA证书(带有密钥)才能颁发从属证书,而从技术上讲,受信任的CA可能会向您的公司颁发CA证书,如果您随后发出任何不良证书,它会反映在他们身上,并可能使他们破产(见DigiNotar)并且他们不希望这样。