Как проверить исполняемый файл по цифровому сертификату - PullRequest
3 голосов
/ 13 марта 2019

У меня есть исполняемый файл .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 может помочь в этой ситуации, как уже упоминалось? Пожалуйста, помогите !!

Спасибо

...