[完整版]70元个人EV代码签名申请教程-受信任签名Trusted Signing

整个申请流程较为复杂,坑比较多,遇到问题可➕微信 sayhelloho 进群交流(备注:鲜艺轻签)

众所周知,开发者开发一个 Windows 应用后,如果直接放到公网上让用户下载安装,是一件较为困难的事,首先在下载时就会遇到浏览器拦截,直接提示“通常不会下载***.exe,请在打开前确保信任***.exe”,下载后还会遇到“发布者未知”、“Windows 已保护你的电脑”的警告,无法直接安装,需要用户在绝对信任的情况下,经过多个步骤才能完成安装,这大大降低了安装率,不信任的用户安装率甚至为 0。

未签名应用的警告
代码未签名应用的警告

要解决这个,我们需要购买代码签名证书,对安装包进行签名,目前代码签名证书常见的有 OV 和 EV 两种,OV 证书的价格相对便宜在 2000/年左右,EV 的价格则通常在 4000/年左右,且 OV/EV 证书仅支持企业购买,除此之外还有支持个人的 IV,但 IV 和 OV 证书都无法立即获得信誉,仍然会被拦截,要达到一定的安装量才能获取信誉,具体要多少安装量微软并未公开,我们之前就有软件两年都没能获得信誉,等于钱白花。

代码签名方案对比

受信任签名 Trusted Signing 是微软 Azure 推出的一项新服务,旨在降低开发者代码数字签名的门槛,只需要 9.9 美元/月,即可获得等同于市面上普遍在 4000 元的 EV 代码签名证书同等的效果:立即消除未知发布者警告、直接获得信誉,最重要的是它还支持个人申请,个人直接显示个人名称,企业则显示企业全称。

受信任签名 Trusted Signing 个人EV签名效果

受信任签名 Trusted Signing 是一项订阅服务,按自然月计费,但你可以随时取消订阅,已签名的软件永久有效,对于签名次数不多的开发者,每次订阅一个月,签完名之后在月底前取消订阅即不再计费

申请成功签名后,可立即消除“未知发布者”警告、直接获得 Microsoft SmartScreen 信誉,签名者显示为个人真实姓名或企业名称,效果等同EV,支持对以下格式文件进行签名.exe、.msi、.appx、.msix、.appxbundle、.msixbundle、.cab、.cat、.dll、.js、.vbs、.wsf、.msp、.mst、.ocx、.ps1、.stl、.sys

这里可能有人会说某宝、海鲜市场也有低价的代签名服务,但你要知道其按次收费、且签名后显示的是别人企业的名称、甚至是失信执行人的企业,同一证书给无数人签名,一旦某个软件违规证书被吊销,那么所有用同一个证书签名的软件都无法使用。

注册账号

受信任签名 Trusted Signing 订阅只有微软 Azure 官方可以提供,首先我们需要注册一个账号,通过官网注册即可,需要注意的是一定要选择“即用即付”,否则后面的流程将无法进行,实测将免费订阅转为即用即付似乎也不行

创建订阅

如果你之前已有账号,可以直接使用之前已有的“即用即付”订阅,或搜索“订阅”,选择服务中的“订阅”来创建一个新的订阅。

①点击左上角“添加”创建订阅;②自定义一个订阅名称;③计划选择“Microsoft Azure Plan”;④点击“评审+创建”按钮

然后在新界面中点击“创建”按钮完成创建。

创建 Trusted Signing 账户

首先在搜索框中输入“Trusted Signing”找到“Trusted Signing Accounts”服务点击打开

接下来,点击左上角的“创建”创建,需要注意的是,下一步的创建中,一旦创建完成立即开始收费,基础版 9.9 美元/月,也就是我们标题中提到的 70 元,且是按日历月收费,所以月初创建最划算,签完名之后可以在月底结束前删除订阅,删除订阅后之前签名的文件仍然一直有效。

①订阅选择我们第一步中创建的即用即付订阅的名称;②新建一个资源组(自定义名称);③输入自定义账户名称,仅支持英文(即:账号名称,签名时需要用到);④选择基础订阅 CreateAccount.basicSkuDropdownOptionLabel 9.9 美元/月,第二选项为高级订阅 99.9 美元/月;⑤点击“审阅并创建按钮”;

当你在点击“审阅并创建”中点击“创建”按钮后将立即开始计费 9.9 美元/月

受信任签名 Trusted Signing 身份验证分两种,分别是个人和组织,个人验证的身份最终数字签名会直接显示个人名称,组织验证的身份会显示组织全称。

添加身份验证 Identity validations 权限

受信任签名 Trusted Signing 最重要也是最麻烦的一步就是身份验证 Identity validations,但在此之前我们需要先添加身份验证 Identity validations 权限后才能进行下一步操作,我们再次来到“Trusted Signing Accounts”服务中,可以顶部搜索框中直接搜索找到,你将看到你上一步中创建的账户,如果你有多个订阅账户并未显示刚创建的,可以勾选“全部”订阅,然后点击上一步创建的订阅名称进行到详情。

①与上图中的第 4 步为同一步;②点击“访问控制(标识和访问管理)”③点击“添加”④点击“添加角色分配”

①搜索“code”②点击“Code Signing Identity Verifier”选中③点击“下一步”按钮

①点击“选择成员”开始选择成员;②点击你自己的账号信息选中;③点击“选择”按钮确认选择;④点击“审阅和分配”按钮审阅

然后再次点击“审阅和分配”完成分配即可。

个人身份验证

首先是个人身份验证,我们只需要准备身份证即可,①点击“Objects”;②点击“Identity validations”;③④切换为个人“Individual”;⑤点击“New identity”然后点击“Public”创建一个新的身份;

然后拿出你的身份证(务必使用身份证,这里我们尝试了多种证件,大部分无法通过,或通过非常困难,需要各种辅助证明),对照身份证逐一填写,除选择的国家和省份外全部使用中文,务必跟身份证上完全相同,一个空格的区别都可能导致审核时间延长,英文我们也试了无法通过:
①真实名字;②真实姓;③电子邮箱(务必和注册账号的邮箱一致);④身份证上市级以下的全部内容,精确到门牌号;⑤中文输入你所在的市或区;⑥选中国的英文“China”;⑦选择省/直辖市/自治区/特别行政区的英文;⑧邮编,务必为身份证地址的实际邮编;⑨勾选同意协议;⑩点击“Create”按钮创建;

然后提前在手机上安装 Microsoft Authenticator 软件(从应用商店搜索即可安装,由微软开发)

很快你将收到一封来自微软的电子邮件:

点击邮件中的链接,或直接在账户中点击你的姓名,你将看到一个要求完成身份验证的创建的窗口,点击窗口中的链接进入(验证页面还有一个二维码后面会用到),点击
“Au10tix”,按提示输入电子邮箱(务必和注册账号的邮箱一致),按流程输入邮箱收到的验证码,输入手机号(不验证),然后页面上会显示一个二维码,需要用手机扫码,然后按提示身份证人像面、扫描自己的面部完成认证,在结果页面点击导入到前面安装的
 Microsoft Authenticator 软件,之后在“已验证ID”中可以看到。

注意事项:

  • 有并发限制,如果遇到错误不要短时间内多次重复尝试,可以等一段时间之后再尝试
  • 验证通过后需要修改邮箱或手机号也需要等待一段时间重新验证
  • 部分网络可能导致无法验证,可以切换流量或 wifi等不同的网络尝试

然后点击 Microsoft Authenticator 软件“已验证ID”右上角的二维码图标,扫描前面“验证页面”的“Present Verifird ID”中的二维码,完成验证。

等待 10 分钟左右,你将会收到验证通过的邮件,如果长时间未收到邮件,可能填写的资料有误会转人工审核,一般次日会收到审核邮件,如果未通需按邮件中的要求提交辅助资料。

企业身份验证

企业身份验证比个人身份验证复制得多,企业身份验证的问题我们与微软来回沟通了小半个月才认可,起初他们连中国营业执照都不认可,之后提交的企业应该会好很多。

首先,你需求确保公司已经成立3年以上,并拥有一个域名,其次如果你是中国的企业,你可能还需要邓白氏码 DUNS。如果你都有,那大概率跟我们一样是可以通过验证的,这里我们切换到组织,然后点击“New identity”新建一个身份验证。

①企业全称;②可访问的企业网站域名;③主要邮箱(务必使用企业域名对于的企业邮箱);④备用邮箱(务必使用企业域名对于的企业邮箱);⑤选择Duns Number 输入邓白氏编码;中文输入你所在的市或区;⑥营业执照上市级以下的全部内容,精确到门牌号;⑦输入营业执照所属市;⑧选中国的英文“China”;⑨选择省/直辖市/自治区/特别行政区的英文;⑩邮编,务必为营业执照地址的实际邮编;⑪勾选同意协议;⑫点击“Create”按钮创建;

创建之后需要等待一段时间的审核,由于时差的原因,通常是半夜审核,在这一步的审核结果你肯定是通不过的,审核邮件会提示你需要提交以下资料:

类别 1: (提供以下文档之一)

  1. Formation documents, such as articles of incorporation, partnership deed
  2. Franchise or agency appointment letters
  3. Government issued letter, license, registration, or certificate
  4. Lease or tenancy documents
  5. Letter or statement from a financial institution or a utility company
  6. Record on a Government registry website (site/link must be displayed)
  7. Stock exchange filings or tax filing records

类别 2: (提供以下文档之一)

  1. Assignment letter from an authorized representative of the organization
  2. Domain ownership records, such as Whois
  3. Domain purchase invoices or registry confirmation records
  4. Website showing name, address, contact information, and domain of the organization

这里我们类别一选择第三项提交营业执照、类别二也选择第三项提交域名注册证书。

审核通过后,我们就可以创建受信任签名 Trusted Signing 证书配置文件进行签名了。

创建证书配置文件

在 Trusted Signing Accounts 中打开之前创建的账号,创建证书配置文件①点击“Certificate profiles”;②点击“Create”;③点击“Public Trust”进行创建。

在新窗口中
①设置自定义的证书配置文件名称(即证书配置文件名称,签名时需要用到);
②选择上一步中已经认证通过的身份;③点击“Create”按钮完成创建;

这样我们就完成了一个证书配置文件的创建,截止目前我们已经完成了受信任签名 Trusted Signing 签名前的大部分准备工作,为了方便签名我们还可以注册一个应用并给应用设置权限,这样使用起来更加方便。

创建应用注册用户凭证

在 Microsoft Azure搜索框搜索“应用注册”打开“应用注册服务”

点击“新注册”注册一个新的应用

输入自定义名称(稍后将用到),点击“注册”按钮完成注册

注册完成之后点击“显示名称”中前面自定义的“名称”进入详情页

复制①处的“应用程序(客户端) ID”保存备用(即应用程序(客户端) I D(AZURE_CLIENT_ID)签名时需要用到);复制②处的“目录(租户) ID”备用(即目录(租户)ID(AZURE_TENANT_ID)签名时需要用到);点击③处进入“客户端凭据”页面;

在客户端凭据页面①点击“新客户端密码”;②输入说明方便你自己识别;③选择有效期,过期后需重新生成;④点击“添加”按钮;

创建完成之后,点击值中的“复制到剪贴板”图标,复制后保存备用(即客户端凭据密码值AZURE_CLIENT_SECRET签名时需要用到)。

接下来,我们还需要给该应用设置权限,才可以进行受信任签名 Trusted Signing 的签名。

设置应用权限

默认情况下,新创建的应用没有受信任签名 Trusted Signing 签名的权限,需要设置权限后才可以使用应用凭据进行签名。

在Trusted Signing Accounts 中进入订阅的“访问控制(标识和访问管理)”-“添加”-“添加角色分配”(与02.添加身份验证 Identity validations 权限中大致相同,但选择的权限、成员不同)

权限中搜索“code”选择“Code Signing Certificate Profile Signer”,注意,这里选择的是“Code Signing Certificate Profile Signer”,然后点击下一个

选择成员时,输入我们上一步“应用注册”中注册应用名搜索,默认不显示,需要搜索才能找到,找到后选择,点击“选择”按钮,再点击“审阅和分配”,然后再次点击“审阅和分配”完成设置。

至此我们已经完成了准备工具,接下来我们可以进行环境配置,然后正式使用受信任签名 Trusted Signing 签名

签名

当我们创建受信任签名 Trusted Signing 证书配置文件注册应用设置应用权限 后终于可以对文件进行数字签名了,Trusted Signing 支持对 Signtool.exe 支持的所有文件进行签名,包括.exe、.msi、.appx、.msix、.appxbundle、.msixbundle、.cab、.cat、.dll、.js、.vbs、.wsf、.msp、.mst、.ocx、.ps1、.stl、.sys等格式

但是通过官方提供的方式进行签名整个流程非常复杂,稍后我们将介绍,这里推荐一款我们开发的受信任 Trusted Signing 可视化签名工具「鲜艺轻签」 同时支持 macOS 和 Windows,只需要填入前面教程中获取的应用程序ID目录租户ID凭据账号名称和证书配置文件名称后,拖入要签名的文件即可一键签名。

使用官方方法签名

准备环境

如果你需要使用官方方法进行签名,这是一个非常庞大的工程,且仅支持 Windows,你首先需要安装最新版的 Windows SDK、.NET 8 运行环境以及Azure CLI,这将占用约 10G 的空间,Windows SDK 和 .NET 8通过 Visual Studio Installer 安装即可

下载后安装并运行,在单个组件中勾选“Windows 11 SDK(10.0.22000.0)”和“.NET 6.0 运行时”点击右下角的按钮进行安装。

然后安装 Azure CLI,可以从这里下载,下载后双击安装即可

接下来你还需要下载一个 dlib,你可以把它理解为 Signtool 的插件

然后创建一个 json 文件

{
  "Endpoint": "<Trusted Signing account endpoint>",
  "CodeSigningAccountName": "<Trusted Signing account name>",
  "CertificateProfileName": "<Certificate profile name>",
  "CorrelationId": "<Optional CorrelationId value>"
}

接下来你就可以使用Signtool 对文件进行签名了

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注