我的.NET exe是使用signtool签名的.使用此代码,我可以验证证书本身的有效性:
var cert = X509Certificate.CreateFromSignedFile("application.exe");
var cert2 = new X509Certificate2(cert.Handle);
bool valid = cert2.Verify();
Run Code Online (Sandbox Code Playgroud)
但是,这仅检查证书本身,而不检查EXE的签名.因此,如果EXE被篡改,则此方法不会检测到它.
如何查看签名?
我们将可执行文件交付给客户端服务,该服务在从我们的服务器下载该可执行文件后在新进程中启动该可执行文件。
可执行文件已使用我们公司的 CodeSigning-Certificate 进行签名(验证码),现在我想验证下载的可执行文件是否使用此 CodeSigning-Certificate 进行了有效签名,以防止恶意的中间人攻击。
但目前我找不到任何关于如何在不使用“signtool.exe”(客户端不可用)的情况下验证这一点的提示。
客户端上的下载服务是一个用 C# 编写的 .NET 4.0 应用程序。所以我正在寻找一种方法来验证下载文件的验证码,并且只有在验证成功时才继续。