开源项目的代码签名证书?

时间:2009-07-24 13:13:06

标签: open-source code-signing-certificate

我想将我的一个应用程序发布为开源,并希望使用我自己的证书对我创建的二进制文件进行数字签名。 (当然,其他任何人都可以下载代码并使用自己的证书自行构建。)我想这样做,所以任何人都可以检查这个版本是由我而不是其他人制作的。我还想创建一个具有有效SSL证书的安全网站,以便访问者可以安全地创建自己的帐户,以便他们为此项目做出贡献。

我可以创建一个自签名证书,但我真的不喜欢这个选项。或者,我可以向Verisign支付几块金币,以获得仅在几年内有效的证书。我也不喜欢那种选择,因为我的宝库对我来说很有价值。

那么,还有其他选择吗?例如,通过提供降价证书来支持开源项目的提供商?它不一定是免费的,只比Verisign便宜得多......

(项目是在C#中使用Visual Studio 2008创建的。另外还有一个需要SSL的ASP.NET项目。)

9 个答案:

答案 0 :(得分:36)

对于开源开发人员,Certum免费提供代码签名证书 *

当您在“公司”字段中输入“开源开发者”时 申请证书。就是这样。

开源代码签名证书的链接是here

[*]从2016年开始,开源代码签名证书不再免费提供。它现在是一项付费服务​​。

答案 1 :(得分:28)

更新:不再免费,现在€105.78 (截至2017年2月19日)。如果您已经拥有其加密硬件,则成本会降低。 FWIW,以下是之前的说明。


从个人身上获取 Certum / Unizeto 的免费代码签名证书,请按照以下步骤操作。使用Internet Explorer或Safari,因为它们支持密钥交换机制。

  1. 浏览到Test ID and OpenSource Code Signing certificates,然后提交表单。

  2. 证书将显示在Activate Certificates下。点击激活

  3. 完成激活向导。对于组织,请输入开源开发人员。对于组织单位,请输入软件发布

  4. 您会收到一封要求提供身份证明的电子邮件。回复开源项目的链接和驾驶执照(或其他接受的文档)的图像。为了保护您的隐私,您应该加密回复。 * 加密的方式因电子邮件客户端而异。对于Outlook,请确保您拥有电子邮件证书(freely available)和turn on encryption

  5. 在一天左右的时间内,您应该会收到一封电子邮件,其中包含收集证书的链接。您必须从用于启动该过程的同一台计算机和浏览器中打开该链接。

  6. *虽然Certum的验证邮件说要将证明发送到ccp@certum.pl,但Certum也接受发送到回复地址info@certum.pl的证据,您可以向其发送加密电子邮件。

答案 2 :(得分:23)

2016年更新:StartCom已被WoSign under questionable circumstances收购。我不相信StartCom / WoSign。请将以下文字视为有关StartCom up to early 2015的良好历史记录。

  

我从StartCom(StartSSL)获得了代码签名证书。我对他们的服务非常满意:他们的客户服务非常快,价格非常合理。

     

获取代码签名证书

     

获取代码签名证书需要Class 2 Identity Validation。 StartCom引导您完成整个过程(具有出色的响应率,通常在我的经验中十分钟内)   如果您想立即获取详细信息,请阅读this blog post。我在一小时内得到验证(通过Paypal支付59.90美元的费用)。

     

验证后,生成新的私钥和证书签名请求(CSR)。请注意,忽略公钥以外的所有字段。证书中的所有信息都是从您在身份验证期间提供的信息中推断出来的,而非来自您的CSR

# Create key and CSR (key must be at least 2048 bit, per Policy Statement)
openssl req -nodes -newkey rsa:2048 -keyout codesigning.key -out codesigning.csr
# Add pass phrase to key (optional, but highly recommended)
openssl rsa -in codesigning.key -des3 -out codesigning2.key && \
    mv codesigning2.key codesigning.key
  

通过网络界面提交,您将很快获得一份有效期为两年的新证书(我在一小时内收到了证书)。

     

问题:终身签名OID

     

StartCom的2级证书具有Lifetime Signing OID集。由于这一点,签名代码的签名在证书过期后将变为无效,即使它已加上时间戳。

     

当我向Eddy Nigg(StartCom的首席运营官/ CTO)询问此OID的原因时,他回答说:

     
    

在证书已过期后,我们要求CRL保持运行长达20年。这是我们可以为EV级别证书(更低的数量,不同的付款条件)做的事情,但是为了这个好处(代码签名只是这个级别中的选项的一部分)会增加第2类的价格。

  
     

因此,时间戳仅在扩展验证(EV)之后可用,即only available to legally established organizations且成本为199.90 $。因此,个别开发人员无法使用来自StartCom的代码签名证书的时间戳

     

很长一段时间,我认为这个限制是个大问题。最近,我改变了主意:它只发生在每两年一次,具有安全意识的用户可能更倾向于获得我的软件的最新版本,旧版本的软件仍然可以工作(对于那些想要使用它的人;虽然没有经过验证的签名)。

     

注意:始终为您的代码添加时间戳,即使设置了终身签名标志!带有时间戳的签名在证书的到期日之前仍然有效,即使证书已被撤销(显然,只有在证书被撤销之前创建了签名)。

     

证书的实际使用

     

在StartCom,您只需支付验证费用。身份验证有效期为350天,在此期间,您可以免费申请代码签名证书。您只能拥有一个有效的代码签名证书,它可用于签署任何代码(MSI,DLL,XPI,...),但不能用于签署驱动程序代码(这需要EV)。

     

要更改证书上的属性,必须撤消先前的证书以及请求的新证书。撤销证书的费用为29.90 $。虽然我在获得代码签名证书后一天更改了我的电子邮件,但是他们特意撤销了我的证书而不收费(我感到非常惊讶)!

     

过期

     

当您的证书即将到期时(差不多两年后),您会收到通知(提前两周)。   如果您的经过验证的身份仍然有效(请注意,验证在350天后过期;然后您必须再次确认您的身份为59.90 $),您可以申请新证书而不撤销上一个证书。不要忘记发布使用此新代码签名证书签名的软件的新版本,因为之前的版本很快会显示“(未经验证)”或类似的内容。

     

OCSP

     

当我收到证书时,我签署了我的Firefox附加组件。但是,即使我的XPI文件被正确签名,它仍然显示“(作者未经验证)”。事实证明,当Firefox查询StartCom的OCSP服务器以获取新证书的撤销状态时,Firefox没有获得当前的证书状态。 possibly relevant forum topic

     

大约半天后,我的证书被OCSP服务器知道,我的名字出现了预期。获得的经验:当您获得新证书时,请等待大约一天,然后再使用新签名发布您的软件。

答案 3 :(得分:8)

您可以查看StartSSL产品。

答案 4 :(得分:8)

您还可以查看KSoftware。他们以每年99美元的价格转售Comodo代码签名证书。

答案 5 :(得分:7)

您可以尝试CAcert。有了这个,您将获得其他CAcert用户的认证。 CAcert具有基于信誉的系统,因此如果您经常获得认证,则您的证书将被视为有效。

您可能必须将CAcert添加为目标系统上的受信任机构。自签名您的可执行文件应该是一个充分的选择,但您需要提供公共证书。使用已知的权限可以帮助验证文件,但我认为在这种情况下它是过度终止使用文件的校验和或sha2哈希结合自签名证书。您可以将Linux机器设置为CA,但是他们需要信任您的公共证书。

答案 6 :(得分:4)

Linux 基金会与 Red Hat、Google 和普渡大学合作开发了 launched sigstore 项目。 Sigstore 称其为“非营利性、公益性软件签名和透明度服务”。

它看起来还没有准备好用于一般用途,但看起来很有希望。

答案 7 :(得分:1)

您需要购买代码签名证书。最便宜的是来自Comodo。我已按照您的计划发布了源代码和二进制文件,并签署了二进制文件。请参阅 Date & time batch changer for photos and other files

答案 8 :(得分:0)

我使用 Comodo Individual Code Signing Certificate。每年 71 美元,不需要任何特殊硬件。

我写了一个 blog post that walks through the installation and use of the certificate。一个重要的注意事项是,除非您要求他们将其保留,否则他们会将您的街道地址写在公共证书上。