为什么Java签名代码需要定期重新签名?
发布日期:2018-12-05Java运行时具有接受来自不同计算机的代码的机制。由于代码在执行之前可能会通过可能不安全的网络,因此这些机制依靠数字签名(代码签名)来验证程序是由可信实体创建的,并且没有被篡改。
数字签名代码需要代码签名证书。只有受信任的证书颁发机构(CA)颁发的证书才被Java运行时默认接受。出于安全考虑,证书只能在签发时间有限的一段时间内(通常为一至三年)有效。
尽管签名本身没有过期,但是对于数字签名被认为是有效的签名必须在代码签名证书有效的情况下进行。使用过期证书创建的签名不被视为有效。知道什么时候创建签名是非常重要的。不幸的是,我们不能简单地信任文件中的“文件创建”属性,因为该值可能是伪造的。
为什么Java签名代码需要定期重新签名
确保在代码签名证书有效时创建签名的一种方法是只接受在签名检查时仍然有效的凭证签名。这种方法的问题在于,即使代码本身没有改变,也需要每年重新签署和重新分发代码一次。
验证证书有效时创建签名的更好方法是使用时间戳。时间标记要求受信任的第三方,时间戳机构(TSA)确认给定签名是在给定日期之前或之前创建的。这个时间戳会被添加到已签名的代码中,作为在代码签名证书过期之前完成签名的证明。
有时候错过的一点是,时间标记本身不过是另一个数字签名,使用时间戳的权限证书而不是开发者的代码签名证书,但是仍然遵循相同的规则和自己的到期日期来考虑。理想情况下,时间戳机构使用的证书将比代码签名证书的将来更远。
一旦时间戳服务器的证书到期,我们将不能再相信证书有效时创建的时间戳。在代码签名证书过期之前,将不再能够确认是否创建了原始签名。
时间标记可以大大延长签名代码的有效生命周期,有时足够长,以至于不再使用代码,但是如果签名代码保持足够长的使用时间,则最终需要重新签名。
到期日期只是签名可能不再被信任的原因之一。涉及代码签名或时间戳的证书可能会被破坏,或者在证书过期之前用于创建它们的算法可能被破解。任何使代码签名证书无效的事情都会影响代码的签名。任何使时间戳证书无效的事情都将使时间戳失效。
人们可以相信,时间标记服务总是使用将来会过期的证书,并且只使用被认为长期有效的算法和密钥长度进行签名,但为了向后兼容,有时需要时间戳我们怀疑算法在中期内是不安全的,在这些情况下,时间戳机构可能会选择使用时间戳较短的证书。
开发人员要了解他们所依赖的每个时间戳服务的优点和缺点,了解他们的代码签名何时不再有效,并采取措施重新签署和重新分配代码以避免中断。
以上,是为大家分享的“为什么Java签名代码需要定期重新签名”的全部内容,如果用户遇到的问题不能解决,可通过wosign官网客服寻求帮助,凡是选择wosign ssl证书的网站用户,wosign可提供免费一对一的ssl证书技术部署支持,免除后顾之忧。
相关内容
在现代IT环境中,有大量不同的方式可以用来确保应用程序的安全性。其中一个就是从源头开始,让应用程序开发者能够对他们的代码进行数字签名,从而确保给定应用程序的完整性和真实性。
WoSign Java代码签名证书主要用于证明软件开发者开发的软件代码符合 Sun Java 规范。您可以使用Java 代码签名证书来为您的 Java 代码进行数字签名,以便通过互联网安全分发,使得最终用户能确信您的代码已经通过权威的第三方认证,而且没有在传输过程中被非法篡改和被破坏。