Skip to content

Не находит сертификат X509Certificate2Collection.Find с findType=X509FindType.FindByIssuerDistinguishedName (Linux) #53

@AlexeyAKat

Description

@AlexeyAKat

Добрый день!

Следующий код в Windows находит сертификат, в Linux (Ubuntu 18.04) не находит.

// cert - X509Certificate2 сертификат 2012_256
var certificates = new X509Certificate2Collection(cert);

// Не находит сертификат под Linux:
var result = certificates.Find(X509FindType.FindByIssuerDistinguishedName, cert.IssuerName.Name, false);
Console.WriteLine($"Count={result.Count}");
// Windows: Count=1
// Linux: Count=0

Поиск изначально используется при проверке CMS подписи, не содержащей сертификат подписанта, для поиска сертификата в хранилище. И, если тип подписанта X509IssuerSerial, то ищем в т.ч. по строке ((X509IssuerSerial)signedCms.SignerInfos[0].SignerIdentifier.Value).IssuerName, которая совпадает по значению с signerCert.IssuerName.Name.
Также в Linux возвращает false метод signerIdentifier.MatchesCertificate(signerCert), хотя в Windows результат = true.

Интересно, что если для Find использовать значение cert.Issuer вместо cert.IssuerName.Name, то поиск работает.
Если сравнить значения, то в Linux различаются именования части элементов - INN вместо ИНН, OGRN вместо ОГРН (и т.д.).
Например:

Cert.IssuerName.Name=INN=007702235133, OGRN=1037700013020, CN=Центральный банк Российской Федерации, O=Банк России, STREET="ул. Неглинная, д. 12", L=г. Москва, S=77 г. Москва, C=RU
Cert.Issuer         =ИНН=007702235133, ОГРН=1037700013020, CN=Центральный банк Российской Федерации, O=Банк России, STREET="ул. Неглинная, д. 12", L=г. Москва, S=77 г. Москва, C=RU

В Windows значения совпадают:

Cert.IssuerName.Name=ИНН=007702235133, ОГРН=1037700013020, CN=Центральный банк Российской Федерации, O=Банк России, STREET="ул. Неглинная, д. 12", L=г. Москва, S=77 г. Москва, C=RU
Cert.Issuer         =ИНН=007702235133, ОГРН=1037700013020, CN=Центральный банк Российской Федерации, O=Банк России, STREET="ул. Неглинная, д. 12", L=г. Москва, S=77 г. Москва, C=RU

Аналогичная проблема с поиском findType=FindBySubjectDistinguishedName и полями cert.Subject и cert.SubjectName.Name.

LibCore 2024.1.10.1, КриптоПро CSP 5.0.12997 КС1, Docker Ubuntu 18.04, Windows 10 22H2 19045.4046.

Metadata

Metadata

Assignees

No one assigned

    Labels

    invalidThis doesn't seem right

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions