点击关注我的Telegram群组和微信公众号

MENU

通过开源项目低成本申请 Certum 个人代码签名证书

2022 年 05 月 16 日 • 阅读: 690 • 分享,教程

前言

过去很多年,得益于域名所有权验证的便捷性,域名 SSL 证书的价格变得越来越廉价,甚至出现了不少类似于 Let's Encrypt 那样的免费 SSL 证书。但是类似于个人签名证书和代码签名证书这样需要验证真人身份的证书仍然处于较高的价格。多年前 Certum 曾面向开源软件开发者提供过免费的个人代码签名服务,但由于该服务无法避免的成本,这项福利被取消。取而代之的是廉价的开源开发者代码签名证书,每年价格对比如下表所示。这种开源作者签名证书只允许作者以个人名义,通过提交个人身份认证和个人开源库认证来获得一个签名证书,该证书的所有者姓名前将包含 Open Source Developer 这样的开源作者字样。

价格

云端代码签名加密卡签名加密卡签名 - 首年套装
EV 代码签名€ 379€ 329€ 359
标准代码签名€ 189€ 129€ 159
开源作者代码签名€ 49€ 25€ 69

可以看到,即使相比标准代码签名证书,Certum 的开源作者代码签名证书的价格也已经是非常便宜的了。上面的表格中首年套装为一个 Certum 加密卡 (€ 49.89) 和一年期代码签名证书的捆绑套装。

版本区别

和SSL证书类似,代码签名时,我们需要证书 crt 和私钥 key 文件。在认证完成后,我们将持有证书文件,而间接地持有私钥文件。Certum所有等级的代码签名证书都分为云端代码签名版本 (Code Signing in the Cloud) 和加密卡签名版本。在云端签名版本中,私钥存放在Certum云端;在加密卡版本中,私钥存放于我们持有的 Certum 的加密卡中。

在签名的过程中,我们需要在联网状态下打开 Certum 软件或插入加密卡,以在本地系统中加载私钥文件,进而完成代码签名。

如果你只是希望尝试一下 Certum 的代码签名,可以选择云端代码签名以避免购买加密卡所产生的快递费用;如果你已经决定长期持有一个代码签名证书,则可以选择加密卡签名版本。

购买

Certum 是一家名为 Asseco 的波兰公司旗下的品牌,它拥有一个波兰站点和一个欧洲站点,用户数据互通。在整个欧洲,Certum 有很多代理商和服务点,如果你在欧洲,你可以先尝试在其官网上搜索你所在地区的代理商。如果你跟我一样,不在欧洲,则可以在 Certum 的欧洲商店中进行购买。

以加密卡签名套装为例,我们在 Certum 欧洲商店中将其加入购物车,并在结账时输入你收货的国家和地址,支付方式中有 PayPal 支持。

购买完成,你可以在你的帐号订单页面查看到订单进度,并在发货后找到追踪码。Certum 发货使用 DHL 快递,从波兰寄到美西只用了2天,确实够快。

开箱

快递包装很简单,DHL 快递袋中简单的一个小盒子,打开后就是签名套装的包装盒了

开箱包装盒

打开后包含一张 Certum 加密卡,加密卡读卡器 (Certum Mini) 和一个使用指导

开箱后物品

Certum 加密卡实际上就是一张 SIM 卡,将其拆下后装如读卡器其后即可

将加密卡装入读卡器

配置加密卡

我们从 Certum 官网上可以下载到 proCertum CardManager 以管理我们的加密卡

在插入读卡器后,点击 Read Card 按钮,若你能看到如下的卡号界面,则说明软件成功地读取到了读卡器中的 Certum 加密卡

成功读取加密卡

首先,点击切换到 Common Profile 标签页,随后点击其中的 Init profile

初始化信息

你会被要求设置 PINPUK 两个密码,这两个密码将保证你的证书安全,所以推荐使用第三方密码管理程序以为其设置高强度密码。完成设置后,你将会看到如下的页面:即PINPUK 设置完成而没有证书被添加。

设置 PIN 和 PUK

证书申请

在 Certum 商店的个人帐号页面左侧的菜单栏中点击 Manage Certificates 以进入证书订单管理面板。这里,你的浏览器会被多次重定向,并最终跳转到 Certum 的波兰站点的面板中。如果你发现网页是波兰语状态,可以点击页面顶部的国旗图标以切换语言为英语。

进入证书管理面板

在证书订单管理页面,你将可以看到已经购买的证书,我们点击 Activate 按钮以开始证书激活流程

激活证书申请

在证书密钥对生成模式中我们直接选择 Key pair generation

Key pair generation

在密钥安全等级中,我们选择 Certum Smart Card 并设置对应的算法和长度

设置算法

接着我们根据要求,下载 Certum CryptoAgent 软件以生成密钥对。下载完成后,我们插入 Certum 加密卡读卡器并运行刚刚下载的密钥对生成程序。在成功建立密钥对生成程序和加密卡之间的连接后,你将被要求输入加密卡的 PIN 密码。

验证 PIN 密码

在正确输入加密卡的 PIN 码后,证书密钥将被写入加密卡。你将会在网页上看到如下的成功提示,并将可以进入接下来的步骤。

确认申请证书

在申请信息页面中,填入你的申请信息,其中以下信息是必填

  • Name: 你的名
  • Surname: 你的姓
  • Email: 你的个人邮箱
  • Common name: 你的姓名
  • Organization: 你的姓名
  • Country: 你所属的国家或地区

在验证方法中选择 automated identity verification ,使用此方法后 Certum 将使用专业的第三方身份验证机构 idcheck 来完成你的身份验证流程

确认信息

身份验证

个人身份验证

在提交了证书申请信息后,你将首先收到一封来自 Certum 的申请开始身份验证邮件。其中包含一个激活身份验证流程的链接,点击后,你将收到一封来自 idcheckd 的邮件。在 idcheck 的邮件中,包含一个开始验证步骤的链接。你需要使用带有摄像头的设备来打开这个链接。

你首先需要拍摄一张包含政府颁发的个人身份证件的信息页面,该页面不仅需要包含你的姓名照片还需要有政府文件的条形码。中国护照和欧盟驾照是符合上述要求的,但加州驾照因条形码在反面,所以不符合条件。

随后,需要进行面部识别。

提交完成后,你便完成了个人身份验证,你会看到如下的信息提示。

完成个人信息认证

个人地址和开源信息验证

在个人身份验证提交后的48小时内,Certum 将会向你的申请邮箱中发送一封如下的邮件,说明你的证书订单已经可以继续跟进。你需要将一个能验证你地址信息的文档以及你的开源项目链接回复至他们的邮箱。

邮件提示

对于地址验证,你需要提交一份水电气费或电话运营商账单,其中账单的地址和姓名应与你的证书申请信息保持一致。

对于开源信息验证,你需要一个你的开源项目库的地址(比如你 GitHub 上的库链接),你的帐号信息应包含你的姓名。

如果你提交的信息都准确无误的话,很快你便会收到验证通过的邮件回复。

完成全部验证

下载证书

在通过身份验证后,也就意味着我们的证书已经被批准。我们回到 Certum 证书管理页面上便可以看到证书的状态变成了 Valid

证书批准

点击 Install online 按钮后我们变可以通过运行 CryptoAgent 程序将证书也导入加密卡。

在 Windows 证书管理中我们也可以看到该证书的详细信息

Windows 证书详情

程序签名

安装 Signtool 签名工具

在这里,我们使用微软的 Signtool 来完成二进制文件的签名,Signtool 是一个包含在 Windows SDK 中的签名工具。在从微软官网下载安装后,我们在系统环境变量中加入 Signtool.exe所在的目录路径,以方便使用 Signtool 工具。64位版的 Windows SDK 默认目录为 C:\Program Files (x86)\Windows Kits\10\bin\x64

系统环境变量

签名命令

  • 在命令提示符或 PowerShell 中,我们可以使用以下命令来完成对二进制文件的签名
signtool sign /n "[1]" / t [2] /fd [3] /v [4]
  • 其中:

    • [1] 为证书名
    • [2] 为时间戳地址,Certum 证书的地址为http://time.certum.pl
    • [3] 为签名算法,Certum 证书的算法应为 sha1sha256
    • [4] 为需要签名的文件(路径+文件名)
  • 执行签名命令后,你需要输入加密卡的 PIN 密码以允许 Signtool 访问到证书和密钥

    进行代码签名

验证签名命令

  • 在命令提示符或 PowerShell 中,我们可以使用以下命令来完成对签名的验证

    signtool verify /pa [1]
  • 其中:

    • [1] 为已签名文件的路径
  • 执行完命令后,你应该能看到验证成功的输出

    验证代码签名

  • 你亦可以在文件属性的电子签名标签中看到证书的信息

    文件属性

更多的命令

完整的 Signtool 命令可以参考微软官方的文档

总结

使用 Certum 的代码签名证书总体上是一个有意思且积极的过程。Certum 能为以一个大多数人能接受的价格为开源开发者提供原本价格昂贵的代码签名服务,这是其它证书厂商都没有做到的。代码签名本意是保护用户免受恶意程序侵害的保护性措施,但在当前这个时代,无论是微软还是苹果都在不断加强系统对未签名程序的安全提醒策略。在一些版本的MacOS上,系统甚至会因程序没有签名而组织用户进一步安装程序。如果这些系统级的代码签名验证继续加强,独立开发者和开源社区必然会受到影响,因为不会有那么多开发者能每年为其发布的免费程序花费大额资金做代码签名,这是一个值得警惕的问题。

在另外一面,Certum 的代码签名证书服务也有不少需要改善体验的地方。首先,Certum 的文档很明显已经多年没有更新,且英语版文档中仍混杂着一些波兰语,使用户阅读困难。另外,官网资源中心中的证书管理软件已经 404 一段时间了,用户需要在资源站中翻一翻才能找到新版本的下载链接。如果遇上问题,其实可以直接给 Certum 客服写邮件问,他们的客服回复很快且总是愿意去解决问题的。

返回文章列表 文章二维码 打赏
本页链接的二维码
打赏二维码
添加新评论

已有 2 条评论
  1. zzhome1 zzhome1

    中国大陆,如何通过地址验证? 用什么资料方便? 没英文中文对照的账单吧?

    1. @zzhome1这种情况一般是直接发中文原件,再加上自己的翻译,看它们是否接受了。这个可以提前发个邮件问一下客服 infolinia@certum.pl