我已经从StartCom(StartSSL)获得了代码签名证书。我对他们的服务非常满意:他们的客户服务非常快,价格也很合理。
获取代码签名证书
要获得代码签名证书,需要进行2类身份验证。StartCom会指导您完成整个过程(以我的经验,通常在十分钟之内就具有出色的响应率)。
如果您想立即获得详细信息,请阅读此博客文章。我在一小时内就通过了验证(费用为59.90 $,通过Paypal)。
验证后,生成一个新的私钥和一个证书签名请求(CSR)。请注意,将忽略除公共密钥以外的所有字段。证书中的所有信息都是从您在身份验证期间提供的信息推断出来的,而不是从CSR推断出来的。
通过Web界面提交此证书,您将很快获得有效期为两年的新证书(我在一小时内就收到了我的证书)。
问题:终身签名OID
StartCom的2类证书已设置了“终身签名OID”。因此,即使证书带有时间戳,证书过期后,已签名代码的签名也将变得无效。
当我询问EdCom Nigg(StartCom的首席运营官/首席技术官)的原因时,他回答:
要求我们在证书过期后将CRL保持最长20年的运行时间。这是我们可以为EV级证书(低得多的金额,不同的付款条件)做的事情,但是仅出于这种好处(如果代码签名只是该级别选项的一部分),就会增加2类的价格。
因此,只有在扩展验证(EV)之后才能使用时间戳记,扩展验证仅适用于合法成立的组织,价格为199.90美元。因此,单个开发人员无法将时间戳记与StartCom的代码签名证书一起使用。
长期以来,我认为此限制是一个大问题。最近,我改变了主意:它仅每两年发生一次,有安全意识的用户可能更倾向于获取我的软件的最新版本,并且该软件的旧版本仍然可以使用(对于那些想要使用它的用户;尽管没有经过验证的签名)。
注意:即使设置了生命周期签名标志,也要始终为您的代码加上时间戳!带有时间戳记的签名将一直有效,直到证书的有效期为止,即使证书已被撤销(显然,只有在证书被撤销之前创建了签名)。
证书的实际使用
在StartCom,您只需支付验证费用。身份验证的有效期为350天,在此期间,您可以免费申请代码签名证书。您只能拥有一个有效的代码签名证书,并且可以用于对任何代码(MSI,DLL,XPI等)进行签名,而不能对驱动程序代码进行签名(这需要EV)。
要更改证书上的属性,必须撤销先前的证书,然后再请求新的证书。吊销证书的费用为29.90美元。尽管当我在获得代码签名证书后的第二天更改了电子邮件,但他们例外地吊销了我的证书却不收费(我很惊讶)!
期满
当您的证书即将过期时(将近两年),您会收到通知(提前两周)。如果您的已验证身份仍然有效(请注意,验证将在350天后到期;那么您必须再次以59.90 $的价格确认您的身份),则可以申请新证书而无需撤销前一个证书。不要忘了发布使用此新代码签名证书签名的软件的新版本,因为以前的版本很快就会显示“(未验证)”或类似内容。
OCSP
收到证书后,我签署了Firefox附加组件。但是,即使我的XPI文件已正确签名,它仍然显示“(作者未验证)”。事实证明,当Firefox向StartCom的OCSP服务器查询新证书的吊销状态时,没有获得当前的证书状态。可能相关的论坛主题
大约半天后,OCSP服务器知道了我的证书,并且我的名字如期出现。获得的经验:获得新证书后,请等待大约一天,然后再使用新签名发布软件。