将Windows Authenticode签名过程迁移到云端的成本效益与安全风险

54次阅读
没有评论

问题描述

在一个多应用的产品中,有四个应用分别运行在Windows、macOS、iOS和Android平台上。其中90%的构建流程在云端执行(Android、iOS和macOS的构建完全在云基础设施上完成)。但是对于Windows应用,在构建流程的某个阶段,需要将.exe文件下载到位于办公室(同时也是我的家庭办公室,因为我们是全员远程办公)的本地PC上,使用Digicert物理密钥进行签名,然后将其上传回云端流水线以完成处理。

这显然在我们的流程中引入了故障和瓶颈点。如果那台机器崩溃了,而我正在度假,或者我的互联网断开了一下午,或者机器需要维护而我又不在,那么我们就无法构建Windows应用。

一个解决方案显然是购买第二个Digicert密钥和NUC,将其放在另一位员工的办公室作为故障转移(因为我是唯一的DevOps,所以他们不会解决维护部分),但我更希望将整个步骤迁移到云端,并使用云HSM(我们使用AWS)来执行这个流程。

通过一些研究,我最初认为这可能成本过高(1个HSM的费用为每小时1.45美元,相当于每月1450美元,而Digicert密钥的费用为699美元/年),然而我发现了这篇文章,其中提到如果我们不需要高可用(我们不需要 – 平均每周只有2/3次构建),这显然会大幅降低成本。

唯一能看到的安全问题是关于签名所需的.exe文件的移动,但我相信通过将所有内容保持在CI的私有VPC内,我可以大大减轻这个问题。

解决方案

请注意以下操作可能涉及版本差异及风险。在进行任何操作之前,务必充分了解相关知识,并确保进行适当的测试和备份。

将Windows Authenticode签名流程迁移到云端

将Windows Authenticode签名流程迁移到云端可以带来更好的可靠性和便利性。以下是可能的解决方案和注意事项:

方案1:使用云HSM进行签名

  1. 选择合适的云HSM服务: AWS提供了云HSM服务,可以帮助您将密钥和签名过程安全地迁移到云端。
  2. 设置和配置HSM: 在AWS控制台中,配置和设置所需的HSM实例。确保您选择了适当的实例类型和区域。
  3. 导入现有密钥: 如果您已经有一个Digicert密钥,您可以将其导入到HSM中以供使用。
  4. 配置签名过程: 在构建流水线中,配置任务以使用HSM进行签名。确保您在私有VPC中执行签名操作,以确保安全性。
  5. 测试和验证: 在迁移之前,务必进行充分的测试,确保签名过程正常运行,并且应用程序的完整性得到保障。

方案2:定期自动删除和重建HSM

  1. 使用AWS Lambda: 根据这篇文章中的指导,使用AWS Lambda函数定期自动删除和重建HSM。这可以降低成本,因为您不需要24/7运行HSM。
  2. 密钥管理: 确保在删除和重建HSM时,您的密钥得到妥善管理,以避免数据丢失或泄露。

安全注意事项和建议

  • 将所有操作保持在私有VPC内,以确保数据安全性。
  • 在迁移前进行充分的测试,确保签名和构建流程的稳定性。
  • 对于敏感操作(如密钥导入和签名),实施适当的访问控制和审计。
  • 定期备份和维护您的密钥和HSM实例,以防止数据丢失。

总结

将Windows Authenticode签名流程迁移到云端可以提高可靠性和便利性,同时降低成本。使用云HSM或定期自动删除和重建HSM都是可行的解决方案,但在实施之前务必进行适当的测试和安全审查。同时,确保在整个迁移过程中保持数据的完整性和安全性,以防止潜在的风险和漏洞。

正文完