У меня есть исполняемый файл .Net, который я подписал цифровой подписью с использованием сертификата, созданного с помощью makecert.exe и подписанного с помощью signtool. Как проверить, что 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. У меня вопрос, WinVerifyTrust также будет проверять сертификат, если тот же exe-файл подписан другим сертификатом, развернутым в доверенных корневых органах. Как я могу связать exe с моим сертификатом? Или как WinVerifyTrust может помочь в этой ситуации, как уже упоминалось? Пожалуйста, помогите !!
Спасибо