【问题标题】:How to sign code in the cloud after the new 2017 rules?2017年新规后如何在云端签码?
【发布时间】:2018-05-03 07:00:05
【问题描述】:

我注意到code signing certificates are from now on required to be paired with physical tokens

最低要求规定 CA 应确保对私钥进行更强的保护。因此,从 2017 年 1 月 30 日起,所有代码签名证书(不仅仅是扩展验证级别)都需要 USB 令牌。这样,所有新的和续订标准代码签名订单都将发送一个 USB 令牌来存储证书并保护私钥。此外,除 EV 代码签名之外的所有标准代码签名产品都将集成到一个“多平台”代码签名证书中。 注意:重新颁发现有代码签名证书(在 2017 年 1 月 30 日之前颁发)将不需要立即提供令牌。但是,这可能会发生变化。

作为使用纯云工作流程的人,这引起了我的一个明显担忧 - 我不能只将此 USB 令牌插入“云”。

我是否理解正确,从现在开始我需要设置一个单独的本地代码签名流程?或者是否还有一些可能在云中签署代码?在新规则下工作我应该有什么期望?

【问题讨论】:

    标签: code-signing policy


    【解决方案1】:

    根据您链接的文章,听起来您绝对需要为您的构建系统提供对 USB 密钥的访问权限才能对您的工件进行签名。正如您所提到的,显而易见的解决方案(可能是微软试图鼓励的)是建立一个专门用于代码签名的本地构建系统。

    从安全的角度来看,这可能是最好的选择,因为您可以在软件和硬件方面强化该机器(例如锁定在工作区的壁橱中)。但这也可能不现实,具体取决于您的构建系统是如何设置的。

    您的另一个选择是使用 USB 转发解决方案将 USB 密钥转发到您的云环境。有很多方法可以做到这一点,最好的方法取决于您正在构建的内容和操作系统,但这里有一些选项的简要说明:

    • Linux 系统 - USB/IP - 这是一个内核模块和用户空间应用程序,提供了大量的 Linux 发行版(它是一个主线模块,但并不总是包括在内)。这使您可以使用本地 USB 设备并通过网络将其转发到另一台 Linux 机器。我很幸运,但第一次设置它可能有点棘手。
    • Windows 系统 - RemoteFX forwarding over RDP - 在较新的 Windows 系统(Windows 10、Server 2012 R2+)上,远程桌面本机支持 USB 重定向。您可以简单地通过 RDP 会话转发 USB 密钥。不过,这将要求您在构建过程中始终保持连接。
    • Windows 系统 - 第三方软件 - 有多种第三方 USB 转发解决方案可用。例如this one。其中一些具有无需活动桌面会话即可运行的优势。

    所有这些解决方案的问题在于,如果 USB 令牌旨在主动防止这种情况(或以某种方式与转发不兼容),则它可能无法正常工作。例如,某些许可证密钥将检查以确保进出计算机的时间在某个容差范围内。在这些情况下,从云到您的机器增加的延迟会导致令牌无法工作。这完全取决于您收到的 USB 密钥。

    此类政策的全部意义在于通过向您提供您必须实际拥有的东西才能使用您的密钥,从而防止您作为密钥持有者意外失去对密钥材料的控制。云构建系统很方便,但通常具有更广泛的安全环境,这使得保护密钥比现场系统更棘手。看起来 Microsoft 和您的 CA 正在尝试规定如何处理密钥。

    【讨论】:

    • 这和我担心的差不多。看似棘手的问题是如何在基于云的 Azure Pipelines 构建服务器中实现 USB 代码签名。鉴于微软正在大力推动其云解决方案和 USB 代码签名,令人惊讶的是他们没有解决方案。
    • 我听到了。这似乎是一个相当极端的政策。我知道云构建系统的安全最佳实践是在云中构建您的代码(未签名),然后在发布到生产之前将工件拉到强化的现场位置,手动签名,然后部署它。但由于所有应用程序都需要签名才能让 Windows 在没有警告的情况下运行它们,这肯定感觉有点矫枉过正。我没有在其他认证机构看到这个政策(虽然我不经常检查)。如果这对您不起作用,则可能值得切换。
    • 运气好能找到基于云的解决方案吗?在办公室运行构建服务器纯粹是为了签署构建是一件很痛苦的事情。
    • 有没有人尝试使用它作为构建管道和本地 USB 密钥之间的代理:github.com/leszekrogowski/remote-sign-tool/tree/master/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-18
    • 2017-11-26
    • 1970-01-01
    • 2019-01-03
    • 1970-01-01
    • 2010-10-29
    相关资源
    最近更新 更多