首页 > 解决方案 > 每年管理 Java 密钥库更改

问题描述

我们有一个 Java 客户端应用程序,它通过 Internet 与服务器端应用程序通信。该代码旨在使用 TLSv1.2 SSLContext 在客户端和服务器之间建立安全套接字。

我们面临的问题是,由于最近行业标准的变化,我们必须每年更新客户端密钥库。这需要客户每年升级我们的软件,因为我们无法获得有效期超过 1 年的可信证书。

这不是什么大问题,但令人痛苦的是,所有客户端都必须与服务器端同时位于新的密钥库上。因此,所有新证书必须同时安装在任何地方。客户端和服务器端。

当我们能够获得具有更长有效期的证书时,每 3 年做一次这并不是什么大事。但是每年都做太痛苦了。

我正在寻找的是在当前证书在受控阶段过期之前向客户端部署新密钥库的能力。然后,一旦所有客户端都更新完毕,在服务器端安装新的证书和密钥。这将比一夜之间的方法痛苦得多。

我尝试在当前密钥库中安装新的证书链和密钥,以便客户端应用程序仅使用一个包含旧证书链和新证书链和密钥的密钥库,但我无法毫无例外地让它工作。一些为安全套接字提供本机支持的第三方库无法处理此问题。

我想出的解决方案是让客户端应用程序使用两组密钥库。一个包含当前的证书链和密钥,另一个包含新的。然后对软件进行编码,以便在某个未来的日历日期(翻转日期)切换并使用新的密钥库。翻转日期必须早于当前密钥库的到期日期。这样,我们可以在翻转日期之前将所有新的密钥库部署到我们的远程客户端,并且在翻转日期的晚上,使用新的证书和密钥更新服务器端。当然,我们必须确保新的密钥库在下一年的下一个更新日期之前成为当前的密钥库。

这是粗略的,并且需要开发人员和运营部门的大量纪律,因为必须敏锐地了解过渡日期和升级程序。但我似乎无法想出一种更优雅的方式来以可控的方式处理这种迁移。

标签: javassl

解决方案


推荐阅读