You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#程序集数字签名证书过期会产生哪些后果?

C#程序集数字签名证书过期的后果

查看证书过期日期的方法

在Windows中通过“属性”菜单查看C#程序集的“数字签名”标签时,仅能看到数字签名时间戳,无法直接查看证书过期日期,可通过以下代码查询(修正了路径转义问题):

var assembly = Assembly.Load(@"C:\xyz.dll");
var signingCertificate = X509Certificate2.CreateFromSignedFile(assembly.Location);
var expiryDate = signingCertificate.NotAfter;

证书过期后的具体影响

证书过期后的行为,取决于你使用的是强命名签名还是Authenticode数字签名:

  • 强命名签名场景:强命名的核心作用是验证程序集未被篡改,系统验证强命名时不会检查证书是否过期。只要程序集的签名未被篡改,即使证书过期,程序依然能正常加载运行,不会出现因证书过期导致的报错。
  • Authenticode数字签名场景:
    • 如果签名时添加了时间戳(就是你在属性里看到的那个):系统验证时会以时间戳记录的签名时刻为准,确认当时证书是否处于有效期内。只要签名时证书有效且时间戳本身有效,哪怕现在证书过期了,程序依然能通过系统的代码签名验证,不会被UAC拦截、杀毒软件标记,也能正常运行。
    • 如果签名时没有添加时间戳:当证书过期后,系统会判定签名无效,可能出现的情况包括:运行时弹出“未知发布者”的UAC警告、杀毒软件将程序标记为可疑、企业环境下的组策略或应用控制规则直接阻止程序运行。
  • 自定义验证逻辑场景:如果你的代码里主动加入了证书有效期的判断(比如用上述代码获取过期日期后自行校验),那过期后的行为完全由你自己的代码逻辑决定,比如提示用户、终止程序等。

内容的提问来源于stack exchange,提问作者Very Professional Username

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 01:07:43