繁体   English   中英

您如何部署自己的 Authenticode 时间戳服务?

[英]How do you deploy your own Authenticode Timestamping Service?

我想用我自己的 Authenticode 时间戳服务为我的 DLL 文件加上时间戳。 这可能吗? 我怎么能做到这一点?

您需要编写一个自定义的 HTTP 时间戳服务器。 它应该遵循RFC 3161时间戳协议 (TSP) 规则。

当您使用 Windows SDK 中的Signtool.exe等工具为 DLL 签名以获取验证码时,您可以指定时间戳服务器的 url(使用 /t 开关。另见 /tr 和 /td)。 然后,您将指向您的服务器。

有关相关问题,请参阅此处的 SO: 可信时间戳 - 了解格式 (rfc3161)

还有: Authenticode 的替代时间戳服务

您可以开发自己的时间戳服务。 您可以编写 TSP (RFC 3161) 服务器,但 Authenticode 不使用 RFC 3161,而是使用MSDN 文章中所述的 PKCS#7/PKCS#9 格式(您也可以实现)。 我们的SecureBlackbox组件包括支持两种格式的时间戳服务器组件。 更新:最近对 Authenticode 的更新使用标准 RFC 3161 时间戳。

但问题是获取您将用于签署时间戳的证书。 该证书必须由其中一个 CA 颁发,据我所知,对于运行时间戳服务器的管理和基础设施方面存在严格的要求。 特别是你需要有一个安全的时间戳硬件。 我没有深入研究这个问题,但是这些方面比编写一段代码要复杂得多。

尽管如此,如果您运行自己的 PKI 基础设施(拥有自己的可信根证书和 CA 证书),那么拥有可信时间戳证书的问题就会自动解决——您可以生成自己的证书。

您可以使用 SignServer 设置自己的时间戳机构 (TSA),支持 Authenticode 时间戳(和/或 RFC#3161)。

有关下载和安装说明,请参阅https://www.signserver.org 总之,重要的步骤是:

  1. 确保您具备以下先决条件:

    • 爪哇
    • 一个应用服务器(即 WildFly)
    • 用于部署的 Apache Ant
  2. https://signserver.orghttps://sourceforge.net/projects/signserver/files/signserver/4.0/下载 4.0 版本。

  3. 配置应用服务器

    • 对于 HTTPS(可选)
    • 使网络服务工作
    • 使用最新的安全修复程序打补丁
  4. 配置 SignServer 部署

    • 在 conf/signserver_deploy.properties 中设置 database.name=nodb 和 database.nodb.location=/an/empty/folder/as/db
  5. 部署 SignServer

    • 出口APPSRV_HOME=/opt/wildfly-9/
    • bin/ant 部署
    • 启动应用服务器 /opt/wildfly-9/bin/standalone.sh
  6. 检查服务器是否启动

    • bin/signserver getstatus 简介
  7. 设置加密令牌

    • bin/signserver setproperties doc/sample-configs/keystore-crypto-configuration.properties
    • bin/signserver 重新加载 1
    • bin/signserver getstatus 简介
  8. 设置示例时间戳签名者

    • bin/signserver setproperties doc/sample-configs/qs_timestamp_configuration.properties
    • bin/signserver 重新加载 2
    • bin/signserver getstatus 简介
  9. 测试时间戳签名者

假设您想要使用它进行测试,如果您乐于使用带有 /tr 开关的 signtool.exe,您就不必查看 RFC,因为 openssl 已经为您实现了足够的功能。 只需用您喜欢的语言编写一个 HTTP POST 处理程序,将发布的数据逐字传递到“openssl ts -reply”中,然后发回 openssl TS 响应数据。 这足以欺骗“signtool.exe verify /pa”,即使它没有严格遵循 RFC。

编辑:似乎开源 Java Signserver 项目为您提供了一个处理 MSauthenticode (/t) 和 rfc3161 (/tr) 时间戳的服务器。 Signserver 的配置对我来说涉及太多的依赖项,所以我改用了 MSAuthenticode 时间戳的单元测试,将一个小型 HTTP 服务器固定到测试用例上,并且几乎没有工作 - 我的 Java 技能充其量是平庸的 - 有一个正在运行的验证码时间戳服务器用于开发,并已验证由此创建的时间戳不受此问题的影响 我不能发布源代码,但是按照这个提示应该可以让你很快地工作。

https://PKIaaS.io提供符合 RFC 3161 和 Microsoft Authenticode 的时间戳服务器。 在站点上创建证书颁发机构后,它将在“CA 服务 URL”列表中显示时间戳 URL,时间戳请求可以发送到该 URL 以进行签名。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM