2

我们将 JNLP 应用程序用于我的业务。实际使用需要为每个版本手动签名 jar。这肯定会导致拥有不同的证书、过期的证书等等..

我们 POC'ed maven 使用 Maven Jarsigner 插件自动签署应用程序。

现在,将这种工艺工业化的最佳方法是什么?我希望在所有应用程序之间共享证书,而不是每次都重新创建一个。

尤其是:

  • 为一堆公司申请提供证书是否正确,或者我应该考虑为每个申请提供一个证书?

  • 我们可以想象将证书存储为依赖项(在业务仓库下)并在构建时同时获取开发和发布证书吗?说本地构建的开发证书和发布的发布证书。

  • 这种使用有什么缺陷?

  • 有没有其他/更好的解决方案?

感谢您的回答。

4

1 回答 1

0

有很多方法可以解决这个问题,所以我只能分享我对这个问题的想法。

a) 我会假设不同的版本会在不同的分支上,所以本质上我们一次只处理一个版本

b)然后我假设每个版本,每个环境都有不同的证书。每个环境部分可以使用 maven 配置文件(http://maven.apache.org/guides/introduction/introduction-to-profiles.html)处理,所以......

是否拥有多个或单个证书是一个偏好问题。由于它提供了任何给定用户和给定应用程序之间的信任级别,因此它本质上是对风险与可维护性的判断。风险,因为具有相同证书的多个应用程序会提供更高的曝光率,也会导致恶意曝光,任何违反一个都是违反所有。因此,证书保护的内容可能很重要。可维护性在于所有应用程序都遵循相同的更新周期,并且对一个应用程序的更改意味着对所有应用程序的更改。

因此,耦合度更高一些,风险更大,维护更简单。如果您是全球企业 Acme Inc 的风险可能比您是本地企业 Icme Inc. 的风险更高,并且可能是其他人的数据或金钱邀请最安全的选择。

我认为没有理由不能存储证书。无论是在存储库中还是在其他一些安全的存储库中,或者只是躺在那里。更有趣的可能是私钥,您可以将其指定为属性,并让开发者将其绑定到开发者配置文件,而发布者则省略,因此您必须在命令行上提供它们。

假设您使用 maven jarsigner 插件,您可能有 ${my.keypass} 和 ${my.keystore},然后是设置了两个属性的开发配置文件,以及只设置了密钥库的发布配置文件。

上次我以类似的方式使用证书时,我有: - 一组单独的组件 - 在单个存储库中 - 可以构建为一个完整的实体。

因此,共享证书很容易。除最终产品外的所有证书都在源代码存储库中 发布证书位于安全服务器上,我们有一个只有少数人可以访问的批处理过程。

至于安全妥协..我认为我们从未遇到过,但我们已经准备好了:)

于 2013-05-14T07:06:31.357 回答