Проверьте Authenticode для execuable с C# .NET 4.0

Мы доставляем исполняемый файл клиентскому сервису, который запускает этот исполняемый файл в новом процессе после его загрузки с наших серверов.

Исполняемый файл подписан (authenticode) с помощью CodeSigning-Certificate нашей компании, и теперь я хотел бы убедиться, что загруженный исполняемый файл правильно подписан этим CodeSigning-Certificate для предотвращения злонамеренных атак типа "человек посередине".

Но в настоящее время я не могу найти какие-либо подсказки о том, как проверить это без использования "signtool.exe" (который недоступен на клиенте).

Download-Service на клиенте - это приложение.NET 4.0, написанное на C#. Поэтому я ищу способ проверить подлинность загруженного файла и продолжить, только если проверка прошла успешно.

1 ответ

Поскольку этот вопрос относится к 2015 году, и я предполагаю, что вы можете использовать .NET Standard 2.0, доступен еще один вариант:

Вы можете использовать пакет NuGet Microsoft.Security.Extensions:

      using Microsoft.Security.Extensions;

...

using (FileStream fs = File.OpenRead(@"c:\test.exe"))
{
    FileSignatureInfo sigInfo = FileSignatureInfo.GetFromFileStream(fs);

    Console.WriteLine(sigInfo.State); // SignatureState.SignedAndTrusted
}
Важный:

Убедитесь, что вы добавляетеgetfilesiginforedistwrapper.dllи соответствующую нативную dll вашей платформы! (getfilesiginforedist.dll)

Источник:

Я посмотрел, как Microsoft делает это для командлета PowerShell.Get-AuthenticodeSignature и нашел его там

Альтернативы:

Другие вопросы по тегам