代码签名证书过期后旧软件还能用多久

对普通Windows软件,代码签名证书过期不等于旧安装包失效。文件在证书有效期内签名,并加上有效可信时间戳,证书自然到期后,这份签名仍可继续通过Windows验证。没有时间戳的签名,则会在证书到期后失效。准备发布的新版本需要新的有效证书,不能继续用过期证书签署。

所以,发现证书要到期,先做两件事:检查仍在下载的安装包有没有有效时间戳,安排新证书接替后续发布。历史文件不必全部重签,已经安装的软件也不会因为证书到期自动卸载。接下来要处理哪些文件,可以直接按下面的方法判断。

代码签名证书过期后旧软件还能用多久

先检查正在下载的那个安装包

不要只看开发电脑上的测试包。从企业实际下载入口取一份文件,右键打开“属性”,进入“数字签名”,选中签名后查看“详细信息”。先确认显示“此数字签名正常”,再检查时间戳信息。

技术人员还可以使用Windows SDK中的SignTool。在文件所在目录执行:

signtool verify /pa /v /tw MyApp.exe

把MyApp.exe换成实际文件名。/pa按普通应用的Authenticode策略验证,/v显示详细结果,/tw在没有时间戳时给出警告。查看输出中的签名验证结果和时间戳信息,不要只看证书名称是否能显示。

如果文件显示签名正常、时间戳有效,就保留原包,不必仅因证书自然到期重新签署。如果提示没有时间戳,再看证书是否已经过期,处理方式不同。

这里说的是普通Windows应用。内核驱动有专门的微软签名要求,不能用这条应用验证命令代替驱动检查。证书被吊销、算法被淘汰等情况,也要单独处理,不能套用“自然到期仍有效”的结论。

没加时间戳,现在补还来不来得及

证书还没过期,就立即处理。拿到原安装包,用支持时间戳的签名工具补上可信时间戳,再执行验证。确认新文件正常后,替换下载渠道中的旧文件,并保存新的文件校验值。

证书已经过期,就不要再尝试用今天的时间戳证明去年的签名时间。时间戳服务记录的是本次操作对应的时间,修改电脑日期、文件创建时间都不能补出可信的历史记录。

对还要继续提供下载的旧版,处理办法是取得新的有效证书,重新签署后发布。需要注意,重签会改变文件,下载页的校验值、更新服务记录以及客户的文件允许列表都可能要同步更新。

重签以后要做一次安装和升级测试。有些更新程序会核对证书指纹,有些客户会固定允许某个文件摘要。只确认数字签名正常,还不足以证明这些附加检查已经更新。

旧包能用,不代表新版本还能继续签

时间戳只对应它所附着的签名,不会给同一款软件的所有版本续命。哪怕只改了一个图标,或者只重新生成安装包,也要针对最终文件重新签名。旧版本带时间戳,不能用来证明新文件的签名时间。

同样,过期后Ukey还能被电脑识别,不代表它能继续承担有效的新版本签名。设备连接正常和证书没有过期,是两件事。

续期最容易漏掉的是工具配置。新证书的指纹与旧证书不同,如果脚本仍指定旧指纹,就会出现“钱付了,签名还是报错”。先在证书管理工具里确认新证书的有效期和指纹,再修改脚本中的选择条件,用一份测试程序签名并验证。

完成这一步之后,再切换正式发布任务。不要等上线当天才第一次使用新证书。产品的年费周期也不等于单张证书的有效期,日常提醒应读取证书里的实际到期日期。

证书被吊销,不能当成普通到期

自然到期是有效期结束,吊销则表示证书状态被撤回。尤其是怀疑私钥或签名账号被盗用时,先停掉相关签名操作,限制设备或账户访问,再联系服务方处理。此时最重要的是阻止继续冒用企业身份。

带时间戳的历史文件会不会受影响,要看吊销原因、时间信息和Windows验证政策。不要向客户承诺“有时间戳就完全不受影响”。对仍在分发的版本逐个验证,确认哪些需要重新发布。

续期时可以顺便选好下一年的签名方式

续期后准备继续用本地硬件签名,可以办理GlobalSign EV代码签名证书。安信SSL证书提供的方案为4000元/年,Ukey已包含在内,并通过顺丰寄送。接收后安装设备驱动,配置好签名工具,再用新证书接替后续发布。

选它的前提很简单:团队愿意保管实体设备,签名主要集中在固定岗位。换电脑时重新配置驱动和工具,不是把硬件里的私钥导出来复制。设备保管人请假或离职时,也要提前安排交接。

如果不想接收和保管Ukey,推荐安信SSL证书的Certum EV代码签名证书,2500元/年,使用云签名,无需本地Ukey。它省去了实体设备流转,企业主要管理账户、身份验证和客户端连接。

对经常更换办公地点的团队,云签名更容易安排。对已有成熟本地签名工作站的企业,保留Ukey方案也很合理。前者要保证网络与授权可用,后者要管理好设备;两款都需要完成企业身份审核。需要自动构建的客户,在采购时把构建系统和签名频率告诉我们,一起确定能否接入。

到期前把这三件事做完就够了

第一,列出目前仍在下载和交付的版本,逐个确认签名与时间戳。没有时间戳的文件优先处理,已经停止分发的历史版本无需批量重签。

第二,准备新证书并更新签名工具,让下一次发版使用新凭据。不要只在采购系统里记录“已续费”,研发必须实际签出一份通过验证的测试包。

第三,保留旧版本、新版本各自的文件校验值和证书标识。客户反馈问题时,先确认他运行的是哪一份文件,再判断是否与本次证书更换有关。

代码签名证书到期常见问题

1、证书过期会让已安装的软件停止运行吗?

不会自动停止或卸载。证书到期与软件授权到期不是一回事。若软件确实被阻止运行,先查看具体提示和文件签名,检查是不是缺少时间戳、证书被吊销或企业终端策略发生变化。

2、有时间戳的安装包需要每年重新签名吗?

不需要。文件未变、签名与可信时间戳验证正常,就不必仅因证书自然到期重签。程序更新或者签名检查出现异常时,再处理对应文件。

3、续费后查看旧安装包,为什么还是旧日期?

旧安装包保存的是当时使用的证书,续费不会自动替换它。检查续期是否完成,应查看新证书,并用它签署测试文件,不能以旧包里的日期判断。

4、没有时间戳,证书又已经过期了怎么办?

对继续分发的文件,使用新的有效证书重新签名并加上时间戳,再替换下载文件和校验值。更改电脑时间或补写过去的文件日期都不能修复这个问题。

5、续期时能换成云签名吗?

可以重新选择云签名方案。迁移时要配置云端账户和工具,更新原脚本里的证书选择,再测试安装和升级。能否沿用原自动构建脚本,需要看它如何调用私钥和完成授权。

相关阅读:EV代码签名证书自助续签

相关文章