Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline crypto_ruslan_161  
#1 Оставлено : 17 октября 2025 г. 11:57:16(UTC)
crypto_ruslan_161

Статус: Новичок

Группы: Участники
Зарегистрирован: 17.10.2025(UTC)
Сообщений: 1
Российская Федерация
Откуда: Москва

Сказал(а) «Спасибо»: 3 раз
Всем Привет!

Вопрос: почему при получении списка сертификатов, сертификаты дублируются? При сравнении выяснил, что отличаются только privateKey.ObjId

То есть если у меня 3 сертификата я получаю 3 дублирующихся лога итого 6

Контекcт:

```
public async findSerialNumber(number: string) {
console.log('Поиск сертификата через COM-объект...');

try {
await this.initializeCrypto();
const oStore = await this.plugin.CreateObjectAsync('CAdESCOM.Store');
await oStore.Open(4, 'My', 0); // 4 = CAPICOM_CURRENT_USER_STORE, 0 = read-only

const certificates = await oStore.Certificates;
const count = await certificates.Count;

console.log(`Всего сертификатов в хранилище "My": ${count}`);

for (let index = 1; index <= count; index++) {
const cert = await certificates.Item(index);

// Проверяем наличие приватного ключа — отсеиваем "мёртвые" копии
const privateKey = await cert.PrivateKey;
if (!privateKey) {
continue;
}

const privateKeyOptions = {
// CachePin: await privateKey.CachePin,
CarrierFlags: await privateKey.CarrierFlags,
ContainerName: await privateKey.ContainerName,
IsDefaultPin: await privateKey.IsDefaultPin,
// KeyPin: await privateKey.KeyPin,
KeySpec: await privateKey.KeySpec,
ProviderName: await privateKey.ProviderName,
ProviderType: await privateKey.ProviderType,
UniqueContainerName: await privateKey.UniqueContainerName,
};

const issuer = await cert.IssuerName;
const serialNumber = await cert.SerialNumber;
const subject = await cert.SubjectName;
const thumbprint = await cert.Thumbprint;
const version = await cert.Version;

// console.log(cert, 'cert');

console.log('Сертификат с ключом:', {
issuer,
privateKey,
privateKeyOptions,
subject,
serialNumber,
thumbprint,
version,
});

if (serialNumber.toUpperCase() === number.toUpperCase()) {
console.log('✅ Найден по серийному номеру через COM');
return true;
}
}

return false;
} catch (error) {
console.error('Ошибка при поиске через COM:', error);
throw error;
}
}
```
Offline Андрей *  
#2 Оставлено : 17 октября 2025 г. 12:39:58(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 13,957
Мужчина
Российская Федерация

Сказал «Спасибо»: 602 раз
Поблагодарили: 2341 раз в 1838 постах
Здравствуйте.

Что на тестовой странице плагина?
Как понять "почему при получении списка сертификатов, сертификаты дублируются?", а далее про логи.

Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Андрей * за этот пост.
crypto_ruslan_161 оставлено 17.10.2025(UTC)
Offline Андрей *  
#3 Оставлено : 17 октября 2025 г. 12:46:11(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 13,957
Мужчина
Российская Федерация

Сказал «Спасибо»: 602 раз
Поблагодарили: 2341 раз в 1838 постах
p.s.

findSerialNumber -
1) серийный номер в целом не уникальный, но с учётом требований к ПАК УЦ - ок...
2) можно использовать отпечаток и функцию для поиска сразу, вместо получения и анализа всех сертификатов


oStoreCerts.Find
CAPICOM_CERTIFICATE_FIND_SHA1_HASH

Подробнее - смотреть примеры к плагину в документации.

Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Андрей * за этот пост.
crypto_ruslan_161 оставлено 17.10.2025(UTC)
Offline Андрей *  
#4 Оставлено : 17 октября 2025 г. 12:51:11(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 13,957
Мужчина
Российская Федерация

Сказал «Спасибо»: 602 раз
Поблагодарили: 2341 раз в 1838 постах
p.s2.

Ещё сертификаты могут быть только в контейнерах, без установки в Личное хранилище,
доставать через:
oStore.Open(cadesplugin.CADESCOM_CONTAINER_STORE);


Пример есть в async_code.js в архиве с примерами.
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Андрей * за этот пост.
crypto_ruslan_161 оставлено 17.10.2025(UTC)
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.