开源项目需要代码签名证书吗?

133
我想将我的一个应用程序作为开源发布,并希望使用自己的证书对我创建的二进制文件进行数字签名。(当然,其他人可以只下载代码并使用自己的证书构建。)我想这样做是为了让任何人都可以检查此构建是否由我制作,而不是由其他人制作。我还想创建一个安全网站,拥有有效的SSL证书,以便访问者可以安全地创建自己的账户,以便他们可以为此项目做出贡献。
我可以创建自签名证书,但我不太喜欢这个选项。或者我可以支付Verisign一些黄金来获取仅有效期几年的证书。我也不喜欢这个选项,因为我的财政很重要。
那么,还有其他选择吗?例如,提供支持开源项目的服务商,可以以降低价格提供证书?它不必是免费的,只需要比Verisign便宜得多就可以了...
(该项目是使用Visual Studio 2008创建的C#项目。还有一个在ASP.NET中使用SSL的附加项目。)

6
我想指出的是,我已经问了这个问题将近8年了。现在有更多的选择,但可靠性正在成为一个问题。虽然有很多免费的SSL和网站开发选项,但代码签名证书仍然很少见... - Wim ten Brink
1
唉,Let's Encrypt 不再支持代码签名证书。到2018年中期,我能找到的最便宜的是Comdo的codesigncert,每年59美元。如果政府颁发所有公民/“主体”国家身份证作为代码签名证书,那就容易多了...但这样我就被迫要相信我的政府了。 - earcam
9个回答

38

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

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

开源代码签名证书的链接在这里

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


2
去过该网站,只能看到SSL证书,你能否提供代码签名证书的深度链接? - Frozenskys
3
据我所知,他们已经停止提供免费的开源开发者认证。否则,我会非常感谢您提供一个链接。 - reiniero
1
它仍然有效。我刚刚尝试并获得了免费的1年证书。整个过程(包括验证我的身份)的周转时间约为两个小时。我添加了一个答案,其中包含详细步骤的细节。 - Edward Brey
18
证书似乎不再免费 - 测试证书页面上已经删除了有关开源代码签名的参考信息,并且现在有一个单独的产品页面 https://en.sklep.unizeto.pl/data-safety/code-signing-certificates/open-source-code-signing.html。虽然价格为14欧元,但比其他证书便宜得多。注册过程似乎与免费时期相同。 - Alex Warren
2
@quasoft 这些是 SSL 证书。 - Nathan Osman
显示剩余8条评论

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

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

  1. 浏览到测试ID和开源代码签名证书,并提交表单。

  2. 证书将出现在激活证书下。点击激活

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

  4. 您将收到一封电子邮件要求提供身份证明。回复一个指向开源项目的链接和您的驾驶执照图像(或另一份被接受的文件)。为了保护您的隐私,您应该加密回复。*加密方式因电子邮件客户端而异。对于Outlook,请确保您拥有电子邮件证书(可免费获得),并打开加密

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

尽管Certum的验证电子邮件中说要将证明发送到ccp@certum.pl,但Certum也接受发送到回复地址info@certum.pl的证明,您可以向该地址发送加密电子邮件。

工作得很好,非常感谢!您知道在1年期满后他们是否免费更新证书吗?还是这只是试用期,然后变成付费证书? - Al-Khwarizmi
1
大约10个月后,您将收到一封邮件提醒您证书即将过期。在该邮件中,他们提到您可以进行续订,但这对我来说并没有起作用(4个月前)。我以与一年前相同的方式请求了新证书,并收到了它。简而言之:您只需每年请求一个新证书即可。 - Martijn Stolk
国家下拉菜单似乎不再列出美国了?我在2013年获得了证书,所以它曾经对我有用过。 - Warty
尝试了这个。现在是一个90天的证书。但是,无法通过“激活”步骤,因为点击“生成密钥”按钮没有任何反应,然后下一步会弹出“生成密钥对”警报... - StevoKeano
1
他们似乎还剩下CSR方法。他们如何知道CSR是由他们的硬件生成的还是其他原因? - OCTAGRAM
如果您恰好拥有旧的智能卡(和读卡器硬件),则将再次要求支付全价。不幸的是,CA/Browser论坛规定了更大的密钥尺寸,这促使了这种变化。我仍然不知道Comodo/Sectigo似乎如何设法避开使用这样的硬件令牌的要求。 - 0xC0000022L

22

2016年更新:StartCom已被WoSign收购在质疑的情况下。我不会信任StartCom/WoSign。请将以下文本视为关于StartCom 曾经直到2015年初表现如何的历史记录。


我从StartCom(StartSSL)获得了代码签名证书。我非常满意他们的服务:客户服务非常快速,价格也非常合理。 获取代码签名证书需要Class 2 Identity Validation。 StartCom将引导您完成整个过程(在我的经验中,响应速度非常快,通常在十分钟内)。
如果您想一次性正确地获取详细信息,请阅读此博客文章。 我在一个小时内通过验证(通过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级证书设置了终身签名OID。由于这个位,签名代码的签名将在证书过期后失效,即使它有时间戳也是如此。

当我询问StartCom的COO/CTO Eddy Nigg关于这个OID的原因时,他回答:

这要求我们在证书过期后保持CRL运行长达20年。这对于EV级别的证书来说是可以做到的(更低的数量,不同的付款条件),但会因此增加Class 2的价格(其中代码签名只是该级别选项中的一部分)。

因此,时间戳仅在扩展验证(EV)之后提供,而只有合法成立的组织才能获得,并且需要支付199.90美元。因此,个人开发者无法使用StartCom的代码签名证书进行时间戳。

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

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

证书的实际用途

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

要更改证书上的属性,必须吊销先前的证书并请求新证书。吊销证书的费用为29.90美元。不过,当我在获得代码签名证书后的第二天更改了我的电子邮件时,他们特别免费吊销了我的证书(我感到非常惊喜)!

到期

当您的证书即将过期(近两年后),您将收到通知(提前两周)。 如果您的已验证身份仍然有效(请记住,验证在350天后过期;然后您必须再次确认您的身份,费用为59.90美元),则可以无需吊销先前的证书请求新证书。不要忘记发布使用此新代码签名证书签名的软件的新版本,因为以前的版本很快将显示“(未经验证)”或类似的内容。

OCSP

当我收到我的证书时,我签署了我的Firefox插件。但是,它仍然显示“(作者未经验证)”,尽管我的XPI文件已正确签名。原来Firefox在查询StartCom的OCSP服务器以获取我的新证书的吊销状态时没有获得当前的证书状态。可能相关的论坛主题


1
感谢您对生命周期签名和“仅一个活动代码签名证书”的见解。这绝对值得知道。我曾计划有一天这样做,而且我认为我仍然想这样做。已经在使用免费的SSL证书了。 - ygoe
2
关于StartCom的更新:代码证书现在不再设置终身签名OID。它们现在与其他任何代码签名证书一样好。对于组织验证,甚至包括内核代码签名。 - Josef

12

Linux基金会与Red Hat、Google和普渡大学合作,推出了sigstore项目。Sigstore自称为“非营利性公共软件签名和透明服务”。

看起来它还没有准备好供一般用户使用,但是前景很有希望。


1
感谢您更新了一个11年前的问题,并提供了最新的消息!Certum证书曾经是免费的,现在每年需要支付50欧元。我创建了一款开源显微镜数据分析软件,希望能够在我的大学实验室计算机上提供使用。我没有因编写该软件而获得报酬,也不想花费自己的钱来签名,所以我非常期待sigstore的到来! - dende

8
你可以看一下StartSSL产品。
请注意,StartSSL现已关闭,不再发放证书。

4
有趣。谷歌浏览器告诉我startssl.com有一张无效的证书,并警告我继续前往该网站的风险。 :-) 不过我还是继续了,看起来没问题。 - Wim ten Brink
52
导入根证书是一种令人激动的感觉,但这也有点违背了使用根证书的初衷。 - Matthew Whited
3
StartSSL是第一个(目前唯一)在Windows Vista+中具有根证书的免费CA。据我所知,旧版本的Windows也有包含它的证书更新。为什么Chrome没有将其作为根证书或回退到Windows进行检查只是Chrome本身的问题。 - Robert MacLean
6
顺便提一句,StartSSL的代码签名证书目前还处于测试阶段,需要进行验证(目前需要付费50美元),才能使用。 - Robert MacLean
1
现在在2015年,他们的免费证书不支持代码签名。 - Eugene Petrov
显示剩余3条评论

8

您还可以查看 KSoftware。他们重新销售美国99美元/年的Comodo代码签名证书。


1
我过去曾经成功地使用过它们。Tucows也是一个转售商,如果你签订多年合同,我认为你可以以每年约70美元的价格购买它们。 - EricLaw
1
我最近在KSoftware购买了一张证书,但我仍未完成验证过程,Comodo的验证团队一直要求我提供电话号码,但Face-to-Face并没有说这是必须的。 - Nicke Manarin
注意!KSoftware/Comodo 看起来很便宜,但他们没有进行任何真正的验证过程,你必须支付律师费来验证你的身份!这会带来意想不到的、非常可怕的额外费用。 - xroche
1
我刚从K软件购买了代码签名证书,因为价格差异很大:每年75美元而不是每年175美元。在经历验证和发放之后,我会尝试在这里发布更新。然而,我的直觉告诉我,支付额外的100美元并直接选择Comodo可能是值得的。我会告诉你进展如何... - Joshua Pinter
1
更新:我尝试通过我们的律师完成所需文件,但他们说这将花费约1,500美元。因此,我们选择只是在D&B.com注册以获得DUNS号码,并将其用作“验证”我们存在的方式。我们现在拥有它,但这真是让人头疼,从开始到完成大约需要一个月的时间。如果你着急,我建议你看看其他提供商,比如digicert.com。(话虽如此,我不确定它们是否有任何不同/更好。) - Joshua Pinter
显示剩余3条评论

7
你可以尝试使用CAcert。通过它,其他CAcert用户可以对你进行认证。CAcert拥有基于声誉的系统,因此如果你被认证足够多次,你的证书将被视为有效。
你可能需要将CAcert添加为目标系统上的受信任机构。自签名可执行文件应该是一个足够的选项,但你需要提供公共证书。使用已知授权机构可以帮助验证文件,但我认为在这种情况下使用校验和或sha2哈希与你的自签名证书相结合更加合适。你可以设置一个Linux盒子作为CA,但他们需要信任你的公共证书。

51
CACert 的不足之处在于它没有被任何主要浏览器默认包含(http://wiki.cacert.org/InclusionStatus),因此典型用户体验与自签名证书无异。 - Kohsuke Kawaguchi
7
此外,如果您有兴趣签署Windows可执行文件,请注意CACert未列在Windows根证书计划成员认证机构(CA)列表中,而Unizeto CERTUM则是。 - user377486
4
我尝试了CAcert。这张图片概括了一切:https://imgur.com/a/rNYqBme - selbie
更新的CA列表可以在https://ccadb-public.secure.force.com/microsoft/IncludedCACertificateReportForMSFT找到。 - Erdogan Kurtur

0

0

根据您博客文章的日期,他们是否仍在证书中包含了您的完整地址(并且随后您是否将其嵌入到每个签名二进制文件中)?我曾尝试从他们那里购买证书,但是去除地址是一件非常麻烦的事情。最终,我支付了多年的证书费用,但却毫无所获。这不是我能推荐的公司。因此,由于我完全不能推荐它,我会对您的答案进行负面评价,而不是因为其内容有缺陷。我想这可能是引发意见的问题。抱歉。 - 0xC0000022L

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接