有很多方法可以解决这个问题,所以我只能分享我对这个问题的想法。
a) 我会假设不同的版本会在不同的分支上,所以本质上我们一次只处理一个版本
b)然后我假设每个版本,每个环境都有不同的证书。每个环境部分可以使用 maven 配置文件(http://maven.apache.org/guides/introduction/introduction-to-profiles.html)处理,所以......
是否拥有多个或单个证书是一个偏好问题。由于它提供了任何给定用户和给定应用程序之间的信任级别,因此它本质上是对风险与可维护性的判断。风险,因为具有相同证书的多个应用程序会提供更高的曝光率,也会导致恶意曝光,任何违反一个都是违反所有。因此,证书保护的内容可能很重要。可维护性在于所有应用程序都遵循相同的更新周期,并且对一个应用程序的更改意味着对所有应用程序的更改。
因此,耦合度更高一些,风险更大,维护更简单。如果您是全球企业 Acme Inc 的风险可能比您是本地企业 Icme Inc. 的风险更高,并且可能是其他人的数据或金钱邀请最安全的选择。
我认为没有理由不能存储证书。无论是在存储库中还是在其他一些安全的存储库中,或者只是躺在那里。更有趣的可能是私钥,您可以将其指定为属性,并让开发者将其绑定到开发者配置文件,而发布者则省略,因此您必须在命令行上提供它们。
假设您使用 maven jarsigner 插件,您可能有 ${my.keypass} 和 ${my.keystore},然后是设置了两个属性的开发配置文件,以及只设置了密钥库的发布配置文件。
上次我以类似的方式使用证书时,我有: - 一组单独的组件 - 在单个存储库中 - 可以构建为一个完整的实体。
因此,共享证书很容易。除最终产品外的所有证书都在源代码存储库中 发布证书位于安全服务器上,我们有一个只有少数人可以访问的批处理过程。
至于安全妥协..我认为我们从未遇到过,但我们已经准备好了:)