ChainCertificate из файла

У меня проблема с проверкой сертификата. У меня есть файл .perm, который является файлом сертификата цепочки (внутри есть несколько BEGIN и END CERTIFICATE).

Я пытаюсь импортировать коллекцию сертификатов, но после импорта коллекция имеет длину 1.

X509Certificate2Collection collection = new X509Certificate2Collection();
collection.Import(certpath);

не увидел интересных вариантов

X509Chain chain2 = new X509Chain();

Я получаю ответ о проверке false, и я считаю, что причина в том, что не все сертификаты были загружены.

Ниже приведен мой полный метод проверки

    private static bool ValidateServerCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
    {
        try
        {
            string certpath = "actual path";

            X509Certificate2Collection collection = new X509Certificate2Collection();
            collection.Import(certpath);

            X509Chain chain2 = new X509Chain();
            foreach(X509Certificate2 c in collection)
            {
                chain2.ChainPolicy.ExtraStore.Add(c);
            }

            // Check all properties
            chain2.ChainPolicy.VerificationFlags = X509VerificationFlags.NoFlag;

            // This setup does not have revocation information
            chain2.ChainPolicy.RevocationMode = X509RevocationMode.NoCheck;

            // Build the chain
            chain2.Build(new X509Certificate2(certificate));

            // Are there any failures from building the chain?
            if (chain2.ChainStatus.Length == 0)
                return true;

            // If there is a status, verify the status is NoError
            bool result = chain2.ChainStatus[0].Status == X509ChainStatusFlags.NoError;

            return result;
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex);
        }
        return false;
    }

person Jakub Wisniewski    schedule 10.06.2015    source источник
comment
Я отредактировал ваш заголовок. См. Должны ли вопросы включать «теги» в свои заголовки?, если нет единого мнения, не следует.   -  person John Saunders    schedule 10.06.2015


Ответы (1)


Метод X509Certificate2Collection и Import не поддерживает файл, содержащий несколько сертификатов (добавленных один за другим). См. документацию по этому методу здесь.

Есть один формат, который может работать - SerializedStore, но в документации об этом мало говорится. Я предполагаю, что это какой-то король массива SerializedCert, который является сертификатом с его свойствами, поэтому даже этот формат не совпадает с тем, что у вас есть.

Попробуйте разделить сертификаты и использовать этот конструктор для инициализации X509Certificate2Collection.

person pepo    schedule 10.06.2015