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

如何用C#验证经自签名证书签名的.exe文件为我方签署

使用C#验证EXE文件的自签名证书有效性

前置条件

因为你用的是自签名证书,客户机器必须信任你的证书:

  • 将你生成的自签名证书导出为.cer格式(不包含私钥)
  • 在客户机器上,把这个.cer文件导入到本地计算机 -> 受信任根证书颁发机构存储区

C#验证代码实现

可以借助System.Security.Cryptography.X509Certificates命名空间下的API完成验证,核心是两步:验证签名的有效性+确认证书是我方的。

完整示例代码

using System;
using System.Security.Cryptography.X509Certificates;

public static class SignatureVerifier
{
    // 替换为你的自签名证书的指纹(可在证书属性中查看)
    private const string OurCertThumbprint = "你的证书指纹(大写,去掉空格)";

    public static bool IsOurSignedExe(string exePath)
    {
        try
        {
            // 获取文件的签名证书
            var cert = X509Certificate2.CreateFromSignedFile(exePath);
            
            // 验证证书信任链(确保客户机器信任该证书)
            using var chain = new X509Chain();
            chain.ChainPolicy.RevocationMode = X509RevocationMode.NoCheck; // 自签名证书可关闭吊销检查,正式场景按需调整
            bool isChainValid = chain.Build(cert);
            
            if (!isChainValid)
            {
                // 可输出链错误信息排查
                foreach (var status in chain.ChainStatus)
                {
                    Console.WriteLine($"链验证错误:{status.StatusInformation}");
                }
                return false;
            }

            // 验证证书是否为我方的:对比指纹(最精准)
            string certThumbprint = cert.Thumbprint?.Trim().ToUpperInvariant();
            return string.Equals(certThumbprint, OurCertThumbprint, StringComparison.OrdinalIgnoreCase);
        }
        catch (Exception ex)
        {
            // 捕获文件未签名、文件不存在等异常
            Console.WriteLine($"验证失败:{ex.Message}");
            return false;
        }
    }
}

代码说明

  • 证书指纹验证:证书的指纹是唯一标识,替换代码中的OurCertThumbprint为你证书的实际指纹(在证书属性的“详细信息”标签中找到“指纹”,复制时去掉中间的空格)。
  • 信任链验证:X509Chain.Build()会检查证书是否在客户机器的信任存储中,确保签名没有被篡改。
  • 异常处理:捕获文件未签名、文件不存在、证书无效等情况,避免程序崩溃。

额外注意事项

  • 如果客户机器没有导入你的根证书,X509Chain.Build()会返回false,验证失败。
  • 正式环境中,可以根据需求开启吊销检查(调整RevocationMode为X509RevocationMode.Online或Offline)。

内容的提问来源于stack exchange,提问作者Smith5727

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 19:34:59