代码签名证书是否与 SSL 证书相同?
2 回答
代码签名证书本质上与 SSL 证书相同。两者都用于对一些数据进行签名,以证明数据(软件包或网页内容)来自证书的“主题”。我能想到的主要区别有两个:
它们在证书中有不同的“增强的密钥使用”OID。代码签名证书只能用于签署一段代码。没有什么可以阻止您使用错误的证书进行签名,但是客户端(例如 Web 浏览器)将检查证书中列出的所有“增强的密钥用法”,如果证书不包含适当的 OID(例如“代码签名”),则拒绝签名. 这意味着一个证书可能同时具有“代码签名”和“服务器身份验证”OID,以便它可以用于这两种情况。但出于安全原因,没有人应该这样做。
SSL 证书一旦过期即失效。但是代码签名证书得到了一些特殊的处理。例如,如果您在 10 年前购买了一些软件,用于签署它的代码签名证书可能今天已经过期。但结合时间戳服务,可以证明该软件包在 10 年前已正确签名。
不。当然,SO 不会让我只回答“不”,所以我们必须解释一下。
基本上,代码签名证书为您提供了一个私钥,该私钥可以根据已知权威机构认证的公钥进行验证。您使用该密钥进行数字签名,另一端可以在您签名时验证您是否拥有来自可信来源的证书。
SSL 证书只是一个签名的“文档”,可以验证它来自受信任的来源。你不能用它加密或签名,因为它没有任何你自己的密钥材料;这只是一份签名文件,上面写着“我证明我相信这个人所说的他是谁。”