Corporate Java Webstart Distribution:使用站点范围内接受的证书来签署代码签名证书

Corporate Java Webstart Distribution: use site-wide accepted certificate to sign a code-signing certificate

我们在一个大型组织中,拥有多个为内部和外部使用而开发的应用程序。其中一个应用程序作为 Java Webstart 应用程序分发,经过大量试验和错误后,我们现在有了适当的签名和打包。

唯一的问题:我们使用的是自签名证书。用户会看到有关 unknown/unverified 供应商的警告,这很糟糕。

幸运的是,该组织的 IT 部门拥有一个所有工作站都接受的证书(我假设是通过站点范围的策略)。如果我们使用这个 accepted 证书来签署 JAR 并创建 Webstart 存档,一切都应该没问题。 IT部门自然不希望把accepted证书分发给所有开发者或者放在构建服务器上,因为这样会违背初衷,引入很多漏洞。

生成由此接受证书签名的代码签名证书的正确方法是什么?

我的假设,基于我从正常 openssl 程序中了解到的生成 Web 服务器中使用的证书的信息:

  1. 使用
  2. 生成 CSR
  3. 将 CSR 发送给 IT 安全部门
  4. IT 使用 accepted 证书从 CSR 生成证书。该证书的有效期应该很短(1 周/1 个月/1 个季度?)
  5. 导入 java 密钥工具进行签名
  6. 确保 keytool 仅对授权用户可用

这行得通吗?在安全或组织障碍方面有异议吗?

如果以上内容正确,我需要一些指导,尤其是第 3 项。我发现了一个有点相关的问题:How do you sign Certificate Signing Request with your Certification Authority?

感谢任何帮助。

如果公司有自己的自己的 CA 根证书,则必须通过 GPO 或安装所有系统(或也许是他们的 JRE?)来自自定义图像,那么您的方法几乎是正确的:

  1. 生成密钥对和 CSR
  2. 将 CSR 发送给公司 CA,他们会发回给您证书
  3. 将证书与 keystore 中的密钥对组合并使用 keystore

可以使用 OpenSSL 完成除最后一步之外的所有步骤,但这是额外的工作:

1:openssl req -newkeyopenssl 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 的机器上都可用的程序;你不能有效地限制它。必须保护的是包含您的密钥对(特别是您的私钥)的 keystore 文件。使用强密码;设置 file/dir permissions/ACL;保持安全备份;一切如常。

另一方面,如果公司有一个代码签名证书(和密钥)是受信任的因为该证书是从像 Verisign 这样的知名 CA(由其颁发)获得的,他们几乎可以肯定 cannot 向您颁发从属证书。只有 CA 证书(及其密钥)可以颁发从属证书,虽然从技术上讲,受信任的 CA 可以向您的公司颁发 CA 证书,但如果您随后颁发任何不良证书,它会反映在这些证书上并可能使它们停业(参见 DigiNotar)他们不想要那个。