自定义加密服务提供程序(CSP)的第三方验证码签名在 Windows Vista 及更高版本中提供。
因此,Microsoft将不再对 CSP 进行签名,并且手动 CSP 签名服务已停用。 发送至cspsign@microsoft.com或cecspsig@microsoft.com以便签名的电子邮件和 CSP 将不再由 Microsoft 处理。
相反,所有第三方 CSP 现在都可以按照以下过程进行自签名:
- 从证书颁发机构(CA)购买代码签名证书,Microsoft还会颁发跨证书。 内核模式代码签名的跨证书主题提供了 Microsoft 所提供的 CA 列表及其相应的跨证书。 请注意,这些证书是唯一链接到Microsoft颁发的“Microsoft代码验证根”的跨证书,这将使 Windows 能够运行第三方 CSP。
- 从 CA 获得证书和匹配的跨证书后,可以使用 SignTool 对所有 CSP 二进制文件进行签名。
- SignTool 包含在最新版本的 Visual Studio 中。 WDK 版本 7.0 和较新版本中也包含它。 请注意,WDK 早期版本中附带的 SignTool 与跨证书不兼容,不能用于对二进制文件进行签名。
注释
从 Windows 8 开始,不再需要对 CSP 进行签名。
可以从命令行对二进制文件进行签名,也可以在 Visual Studio 2012 及更新版本中以集成生成步骤进行签名。
SignTool 的命令为:
signtool.exe sign /ac <cross-certificate_from_ms> /sha1 <sha1_hash> /t <timestamp_server> /d <”optional_description_in_double_quotes”> <binary_file.ext>
- <交叉证书_from_ca> 是您从 Microsoft 下载的交叉证书文件
- < > sha1_hash是对应于代码签名证书的 SHA1 指纹
- <timestamp_server> 是用于对签名作进行时间戳的服务器
- <“optional_description_in_double_quotes”> 是可选的友好名称描述
- <binary_file.ext> 是要签名的文件
例如:
signtool.exe sign /ac certificate.cer /sha1 553e39af9e0ea8c9edcd802abbf103166f81fa50 /t "http://timestamp.digicert.com" /d "My Cryptographic Service Provider" csp.dll
注释
不需要在 CSP DLL 中包括资源 ID #666 或在注册表中添加签名,因为这在较旧的 CSP 签名中是必要的。
其他帮助和支持
可以尝试 Windows 桌面版的应用程序安全性 论坛以获取帮助。