Я разрабатываю библиотеку, которая генерирует XML-данные и обозначает генерируемый XML. Я установил сертификат pkcs12 (сгенерированный с OpenSSL из файла pem) в хранилище сертификатов Windows.Явно признаю сертификат в хранилище сертификатов Windows
я загружаю сертификат от C# код с
X509Store store = new X509Store(StoreName.My, StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadOnly);
X509Certificate2 cert = null;
foreach (var item in store.Certificates)
{
if (item.SubjectName.Name.Contains("CN=IDENTIFIER"))
{
cert = item;
break;
}
}
store.Close();
В моем случае идентификатор CN является: мой prename + фамилия. Сертификат поступает от третьего лица. Поэтому я думаю, что я не влияю на идентификаторы.
И здесь возникает вопрос:
Есть ли способ, чтобы точно определить этот сертификат от C#. В будущем возможно, что несколько сертификатов имеют одинаковые параметры X509 (CN и т. Д.).
Заранее спасибо.
Благодарим вас, серийный номер certerName + cert - именно то, что я искал. IETF говорит: Серийный номер ДОЛЖЕН быть положительным целым числом, назначенным ЦС для каждого сертификата. Он ДОЛЖЕН быть уникальным для каждого сертификата, выданного данным ЦС (то есть имя эмитента и серийный номер идентифицируют уникальный сертификат). ЦС ДОЛЖНЫ принудительно ввести serialNumber в неотрицательное целое число. Но что вы имеете в виду с RDN? – csteinmueller
Я думаю, что RDN является именем пользователя, которое имеет тип X500DistinguishedName – csteinmueller
@csteinmueller RDN означает RelativeDistinguishedName. Это тип-структура с несколькими полями.ПРИМЕЧАНИЕ. Серийный номер является целым числом, но длина этого целого не определена, а серийные номера длиной 20 байтов не являются редкостью. –