Могу ли я убедиться, используя C #, что сертификат X509 был выдан доверенным органом? - PullRequest
2 голосов
/ 18 мая 2010

Если я использую X509Certificate.CreateFromSignedFile для получения сертификата, используемого для подписи файла, могу ли я подтвердить, что он был подписан доверенным органом - и это не просто какой-то «самоподписанный» сертификат?

Я хочу извлечь имя субъекта (компании) из сертификата, чтобы убедиться, что неуправляемая DLL, которую я использую, не имеет доступа (я не могу ее проверить, так как она часто и независимо обновляется) и является официальной.

Тем не менее, я обеспокоен тем, что поддельная DLL может быть подписана с помощью «самоподписанного» сертификата и вернуть оригинальное название компании. Итак, я хочу убедиться, что сертификат выдан Versign, Thwate или аналогичным (все, что установлено в репозитории сертификатов на машине, будет в порядке).

Как это сделать, если вообще используется при использовании X509Certificate.CreateFromSignedFile? Или это происходит автоматически (т. Е. «Самозаверяющий» сертификат не будет работать)?

Ответы [ 2 ]

1 голос
/ 18 мая 2010

Если это недействительный сертификат, вы получите исключение. Что касается того, что вы хотите проверить название компании и т.д ... Вот код:

  ServicePointManager.ServerCertificateValidationCallback +=
            new System.Net.Security.RemoteCertificateValidationCallback(customXertificateValidation);

    private static bool customXertificateValidation(
        object sender, X509Certificate cert,
        X509Chain chain, System.Net.Security.SslPolicyErrors error)
    {

        // check here 'cert' parameter properties (ex. Subject) and based on the result 
        // you expect return true or false

        return false/true;
    }

РЕДАКТИРОВАТЬ: Приведенный выше код подходит только при запросе ресурса https, который получил недействительный (самоподписанный, просроченный ... и т. Д.) Сертификат. Что касается извлечения подписей из подписанных файлов, пожалуйста, проверьте здесь: Извлечение цифровых подписей из подписанных файлов с помощью .NET

0 голосов
/ 18 мая 2010

Не достаточно ли Verify () метода?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...