代码之家  ›  专栏  ›  技术社区  ›  rollsch

交叉签名msi或可执行文件。有什么理由这样做吗?

  •  0
  • rollsch  · 技术社区  · 7 年前

    https://docs.microsoft.com/en-us/windows-hardware/drivers/install/cross-certificates-for-kernel-mode-code-signing

    根据上面的链接,您可以使用代码签名证书对内核模型驱动程序进行签名,然后使用交叉签名证书再次对其进行签名。这是内核模式驱动程序所必需的。

    问题是,使用交叉签名证书对exe/msi包进行签名有什么原因/好处吗?

    如果没有任何好处,为什么内核模式驱动程序需要它?如何使其更安全?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Jim W    7 年前

    交叉签名提供了额外的信任级别,这对于内核模式驱动程序很重要。交叉签名提供了额外的信任,因为两个证书颁发机构都不太可能受到损害。

    对于EXE和MSI来说,交叉签名似乎意味着在其中一个权限被破坏的情况下,您的可执行文件仍然可以被信任。

    编辑:

    与此相关的我个人经验是使用Authenticode签名的程序集,以及它们加载速度如何慢(您还没有说您的EXE是否是.NET程序集)。请参见此处 https://blogs.msdn.microsoft.com/shawnfa/2005/12/13/authenticode-and-assemblies/

    装配负载性能

    CLR加载具有Authenticode签名的程序集时 将始终尝试验证该签名。 这与 Windows loader,它将仅在中验证文件的签名 特定实例,例如当文件是ActiveX控件时。 这 验证可能需要大量时间,因为它可能需要命中 网络多次下载最新证书 吊销列表,并确保有完整的 有效证书正在发送到受信任的根目录。所以,当 Authenticode签名应用于一个并非闻所未闻的程序集 查看加载该程序集时的几秒钟延迟。

    还要注意,优化应用于强命名程序集, 如果程序集是 从GAC加载不会应用于Authenticode签名。 由于Authenticode提供了吊销证书的功能,因此我们 无法假定,因为程序集的Authenticode签名为 当它进入GAC时有效,每次我们 加载它。

    对我来说,这意味着如果你的EXE是由。NET(即,它是一个程序集)那么可能CA的签名越多,加载速度就越慢。如果不是的话。NET或ActiveX控件(或“某些实例”),则不会有延迟。

    推荐文章