我们有一个基于 Windows 的基础设施。最近,我们的软件开发人员问我,我们是否可以颁发自己的证书来签署我们发送给合作伙伴的一些小程序。但我并不完全了解这样做的过程。我到底应该如何设置才能颁发和维护我们自己的证书来签署软件?显然,出于某些安全考虑,软件必须进行签名。
从 Verisign 这样的提供商处购买证书不是一个选择,而且据我所知,我们的证书不需要立即获得信任。
通常怎么做?我公司有基于 Windows 的基础设施。
答案1
您可以设置 Microsoft 证书颁发机构,但这可能不适合您要完成的任务。Microsoft 证书服务器可用于对网络内使用的代码进行签名,因为您可以让所有机器都信任该证书颁发机构。如果没有 Verisign 等提供商的签名,这不会帮助其他人信任您的应用作为开发者。
这是一篇关于使用内部 PKI 签署 Windows 8 应用程序的帖子,但这仅适用于内部应用程序,而不适用于外部应用程序。http://blogs.technet.com/b/deploymentguys/archive/2013/06/14/signing-windows-8-applications-using-an-internal-pki.aspx
答案2
我真的不认为如果你没有获得适当的、公认的第三方代码签名证书你就能够完成你想要的事情。
Verisign 并非唯一一家颁发此类证书的机构;货比三家,您会找到更优惠的价格。
至于签名过程,我按照此处描述的方式使用 MS Signtool: https://stackoverflow.com/questions/2718776/how-do-i-sign-exes-and-dlls-with-my-code-signing-certificate
答案3
您绝对可以创建自己的 CA 并将该 CA 发送给您的客户,客户必须将其作为受信任的 CA 安装在他们用来运行您的软件的所有计算机上。您必须管理(并严密保护)CA 密钥,并说服您的每个客户与您一起这样做(那些具有类似安全策略的人会断然拒绝),并提供详细说明并支持它。
如果您使用不受信任的证书,通常 Windows 会产生比您根本不签署二进制文件时更多的噪音。
说真的,不要排除购买其中一种的可能性。如果你选择 StartCom 这样的提供商,你每两年最多只需 120 美元即可获得一份。这比自己签署合同要便宜得多,即使你所有的员工都拿到了最低工资。