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