Gregordinary Asked: 2015-11-12 09:00:58 +0800 CST2015-11-12 09:00:58 +0800 CST 2015-11-12 09:00:58 +0800 CST 如何识别 Authenticode 时间戳与 RFC 3161 兼容时间戳? 772 使用 Microsoft 的Signtool对代码进行签名时,在指定时间戳 URL、/t 和 /tr 时有几个不同的选项。 /t 可以指定 Authenticode 时间戳 URL,并且 /tr 应该与 RFC 3161 兼容的时间戳服务器一起使用。 有没有办法分析文件上的时间戳以确定是否使用了 /t 或 /tr ?如果是 Authenticode 还是 RFC 3161? timestamp 2 个回答 Voted Best Answer Snaps-a-Lot 2015-11-25T09:48:46+08:002015-11-25T09:48:46+08:00 是的。当使用以下语法调用时,Microsoft 的 signtool.exe 将在以前签名的文件上打印数字签名的摘要,包括用于创建时间戳的标准: signtool 验证 /all /pa文件名 为了说明这一点,请将您自己的一个文件置于赛门铁克应用双重签名的程序中。这将在您的文件上产生 2 个数字签名,每个签名都有相应的时间戳。一个时间戳将使用 Authenticode,另一个使用 RFC 3161。 请注意,赛门铁克的程序建议通过查看文件 RMB 属性的数字签名选项卡来验证结果。该选项卡提供时间戳值(日期和时间),但不提供时间戳标准。 完成该过程后,使用上述建议的 signtool verify 命令查看数字签名摘要。时间戳标准将显示在“时间戳”字段中。例如,如果您对名为MyDigitallySigned.dll的文件进行双重签名,您将看到以下内容: C:\Users\myusername>signtool verify /all /pa MyDigitallySigned.dll 文件:MyDigitallySigned.dll 索引==算法==时间戳==== ========================================= 0 sha1 验证码 1 sha256 RFC3161 Falcon Momot 2015-11-12T13:14:36+08:002015-11-12T13:14:36+08:00 实施细节在这里:https ://msdn.microsoft.com/en-us/library/windows/desktop/bb931395(v=vs.85).aspx 简而言之,签名是标准化的。唯一不同的/t应该/tr是用于获取时间戳签名的协议。在这两种情况下,Signtool 都会对签名进行自己的处理:将其作为副签名复制到作为验证码签名的 PKCS#7 消息中。 如果您可以将 CA 证书映射到协议并且它们是不同的,那么您也许可以通过检查签名来推断使用的方法,但应该没有理由这样做。
是的。当使用以下语法调用时,Microsoft 的 signtool.exe 将在以前签名的文件上打印数字签名的摘要,包括用于创建时间戳的标准:
signtool 验证 /all /pa文件名
为了说明这一点,请将您自己的一个文件置于赛门铁克应用双重签名的程序中。这将在您的文件上产生 2 个数字签名,每个签名都有相应的时间戳。一个时间戳将使用 Authenticode,另一个使用 RFC 3161。
完成该过程后,使用上述建议的 signtool verify 命令查看数字签名摘要。时间戳标准将显示在“时间戳”字段中。例如,如果您对名为MyDigitallySigned.dll的文件进行双重签名,您将看到以下内容:
实施细节在这里:https ://msdn.microsoft.com/en-us/library/windows/desktop/bb931395(v=vs.85).aspx
简而言之,签名是标准化的。唯一不同的
/t
应该/tr
是用于获取时间戳签名的协议。在这两种情况下,Signtool 都会对签名进行自己的处理:将其作为副签名复制到作为验证码签名的 PKCS#7 消息中。如果您可以将 CA 证书映射到协议并且它们是不同的,那么您也许可以通过检查签名来推断使用的方法,但应该没有理由这样做。