我想使用java jarsigner工具的时间戳选项-tsa
。我想到的时间戳服务需要身份验证。为此,您将获得一个个性化的软令牌,以便在时间戳服务器上标识您自己。
我的问题:jarsigner工具是否支持此身份验证?换句话说:jarsigner是否支持RFC 3161(时间戳协议)和 RFC 2246(身份验证)?
jarsigner有一个选项-tsacert
。文档说明:
如果" -tsacert别名"在签署JAR文件时出现在命令行上,然后为签名生成时间戳。别名标识当前有效的密钥库中的TSA公钥证书。将检查条目证书的主题信息访问扩展,其中包含标识TSA位置的URL。
我感到困惑的是措辞"为签名生成时间戳"。这是什么意思?措辞"别名标识TSA的公钥证书"令人困惑:它似乎用于验证时间戳(因为它是一个公钥)不识别请求者(因为它不是私钥)。
此外:我想要签名的证书不是软令牌,但存储在智能卡上。它无法导出到密钥库。因此,我必须使用选项-keystore NONE -storetype PKCS11
。我认为由于这个原因,无法使用选项-tsacert alias
,因为它需要一个包含软令牌的真实密钥库。
答案 0 :(得分:1)
签名的Jarfile有效性受到用于签名的证书的有效性的限制。
时间戳只能说明jarfile的签名时间。
要签署jar文件,必须使用pvtkey。 对于时间戳,技术上不需要密钥,只需要它的哈希值。
请参阅以下链接了解更多信息, https://www.digistamp.com/technical/how-a-digital-time-stamp-works/
谢谢。