我有一个.Net可执行文件,已使用通过makecert.exe生成的证书进行数字签名并使用signtool进行了签名。如何验证exe未被篡改或仍在使用由我进行数字签名的证书。
对于ex-一种情况,任何人都可以替换由另一证书进行数字签名并放入受信任的根颁发机构的exe。
从各种互联网来源中我读到下面的代码只会检查证书是否有效
X509Certificate signer = X509Certificate.CreateFromSignedFile(executablePath);
X509Certificate2 certificate = new X509Certificate2(signer);
var certificateChain = new X509Chain
{
ChainPolicy = {
RevocationFlag = X509RevocationFlag.EntireChain,
RevocationMode = X509RevocationMode.Online,
UrlRetrievalTimeout = new TimeSpan(0, 1, 0),
VerificationFlags = X509VerificationFlags.NoFlag
}
};
var chainIsValid = certificateChain.Build(certificate);
if (chainIsValid)
{}
建议使用WinVerifyTrust。我的问题是,如果同一exe文件由在受信任的根权限中部署的另一个证书签名,则WinVerifyTrust还将验证证书。如何将exe与我的证书关联?或者WinVerifyTrust在这种情况下如何对您有所帮助?请帮忙!
谢谢