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