整个申请流程较为复杂,坑比较多,遇到问题可➕微信 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 是一项订阅服务,按自然月计费,但你可以随时取消订阅,已签名的软件永久有效,对于签名次数不多的开发者,每次订阅一个月,签完名之后在月底前取消订阅即不再计费。
申请成功签名后,可立即消除“未知发布者”警告、直接获得 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: (提供以下文档之一)
- Formation documents, such as articles of incorporation, partnership deed
- Franchise or agency appointment letters
- Government issued letter, license, registration, or certificate
- Lease or tenancy documents
- Letter or statement from a financial institution or a utility company
- Record on a Government registry website (site/link must be displayed)
- Stock exchange filings or tax filing records
类别 2: (提供以下文档之一)
- Assignment letter from an authorized representative of the organization
- Domain ownership records, such as Whois
- Domain purchase invoices or registry confirmation records
- 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 对文件进行签名了
发表回复