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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline katerinoc  
#1 Оставлено : 7 февраля 2025 г. 16:33:33(UTC)
katerinoc

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

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

Добрый день!

Подскажите, я пытаюсь считать сертификат следующим образом:
Цитата:
// Функция для извлечения значений по ключу
EXTRACTVALUE(key,inputString) {
const regex = new RegExp(`${key}=([^,]+)`);
const match = inputString.match(regex);
return match && match[1] ? match[1].trim().replace(/^"|"$/g, '') : null; // Убираем кавычки, если они есть
}

PARSE(base64Cert) {
const self = this; // Сохраняем контекст в переменную
return new Promise(function (resolve, reject){
cadesplugin.async_spawn(function* (args) {



var cert = yield cadesplugin.CreateObjectAsync("CAPICOM.Certificate");
yield cert.Import(base64Cert);
var subjectname = yield cert.SubjectName

var data = {
O: self.EXTRACTVALUE('O',subjectname),
C: self.EXTRACTVALUE('C',subjectname),
S: self.EXTRACTVALUE('S',subjectname),
L: self.EXTRACTVALUE('L',subjectname),
STREET: self.EXTRACTVALUE('STREET',subjectname),
ОГРН: self.EXTRACTVALUE('ОГРН',subjectname),
ИНН: self.EXTRACTVALUE('ИНН',subjectname),
СНИЛС: self.EXTRACTVALUE('СНИЛС',subjectname),
CN: self.EXTRACTVALUE('CN',subjectname),
SN: self.EXTRACTVALUE('SN',subjectname),
G: self.EXTRACTVALUE('G',subjectname),
OU: self.EXTRACTVALUE('OU',subjectname),
T: self.EXTRACTVALUE('T',subjectname),
E: self.EXTRACTVALUE('E',subjectname),
PublicKey : yield cert.PublicKey,
SerialNumber : yield cert.SerialNumber,
DateBegin : yield cert.ValidFromDate,
DateEnd : yield cert.ValidToDate
}
const dataString = JSON.stringify(data, null, 2);
window.cert_info = dataString;;
return args[0](data);
}, resolve, reject);
});
}



Мне необходимо также получить значения OID.1.2.643.4.14.3.1.2 и 1.3.6.1.4.1.10244.4.3:

Пробовала разные подходы:
1)
Цитата:
var extensions = yield cert.Extensions();
var extensionsCount = yield extensions.Count;
for (var j = 1; j <= extensionsCount; j++) {
var ext = yield extensions.Item(j); // Получаем элемент расширения
var oidObject = yield ext.OID; // Получаем OID
var oid = yield oidObject.Value; // Получаем строковое значение OID
var noid = yield oidObject.Name; // Получаем строковое значение OID
var foid = yield oidObject.FriendlyName; // Получаем строковое значение OID

if (oid == "1.2.643.4.14.3.1.2") {
console.log("Found OID: " + oid + " Value: " + val);
}
if (oid == "1.3.6.1.4.1.10244.4.3") {
console.log("Found OID: " + oid + " Value: " + val);
}
}


2) через
Цитата:
var eku = yield cert.ExtendedKeyUsage(); // Получаем строковое значение OID
var ekuCount = yield eku.OID;
console.log("ekuCount: " + ekuCount); // Вывод значения

var ekuCount = yield eku.Item(1);
console.log("ekuCount: " + ekuCount); // Вывод значения

вообще далеко не продвинулось.

Подскажите, как можно получить значения конкретно этих OID через cadesplugin в случае если сертификат в хранилище еще не установлен (требуется получить само "содержимое" конкретного OID)
Offline Андрей *  
#2 Оставлено : 7 февраля 2025 г. 17:35:41(UTC)
Андрей *

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

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

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

В subjectname разве есть эти OID?


исходя из примера с 1.3.6.1.4.1.10244.4.3 - это отдельное расширение, при просмотре сертификата (в ОС Windows? ) - есть "читаемая" информация? Вероятно, нет.

Пример как у меня отображается указанный сертификат из той ветки:

Snimok ehkrana ot 2025-02-07 18-21-59.png (16kb) загружен 1 раз(а).
Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей *  
#3 Оставлено : 7 февраля 2025 г. 17:40:23(UTC)
Андрей *

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

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

Сказал «Спасибо»: 554 раз
Поблагодарили: 2250 раз в 1756 постах
Цитата:
2) через
ExtendedKeyUsage
- это про другое, улучшенный ключ - перечень OID-ов:

Snimok ehkrana ot 2025-02-07 18-28-27.png (12kb) загружен 2 раз(а).
Snimok ehkrana ot 2025-02-07 18-27-54.png (10kb) загружен 3 раз(а).
Техническую поддержку оказываем тут
Наша база знаний
Offline katerinoc  
#4 Оставлено : 7 февраля 2025 г. 17:53:30(UTC)
katerinoc

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

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

Автор: Андрей * Перейти к цитате
Здравствуйте.

В subjectname разве есть эти OID?


исходя из примера с 1.3.6.1.4.1.10244.4.3 - это отдельное расширение, при просмотре сертификата (в ОС Windows? ) - есть "читаемая" информация? Вероятно, нет.

Пример как у меня отображается указанный сертификат из той ветки:

Snimok ehkrana ot 2025-02-07 18-21-59.png (16kb) загружен 1 раз(а).




Ранее вызывая для конкретного сертификата certutil.exe там отображалась эта информация с OID. Сейчас пытаюсь найти аналог для cadesplugin.
В subjectname их нет, его я извлекала для другой цели)
Offline Андрей *  
#5 Оставлено : 7 февраля 2025 г. 18:14:05(UTC)
Андрей *

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

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

Сказал «Спасибо»: 554 раз
Поблагодарили: 2250 раз в 1756 постах
Цитата:
1.3.6.1.4.1.10244.4.3: Флаги = 0, Длина = 1b
Неизвестный тип расширения

0000 30 19 06 09 2b 06 01 04 01 d0 04 05 02 04 0c 30 0...+..........0
0010 33 33 33 4c 57 53 36 50 42 30 31 333LWS6PB01
0000: 30 19 ; SEQUENCE (19 байт)
0002: 06 09 ; OBJECT_ID (9 байт)
0004: | 2b 06 01 04 01 d0 04 05 02
| ; 1.3.6.1.4.1.10244.5.2
000d: 04 0c ; OCTET_STRING (c байт)
000f: 30 33 33 33 4c 57 53 36 50 42 30 31 ; 0333LWS6PB01
Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей *  
#6 Оставлено : 7 февраля 2025 г. 20:00:45(UTC)
Андрей *

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

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

Сказал «Спасибо»: 554 раз
Поблагодарили: 2250 раз в 1756 постах
а в коде откуда val? неисправленная ошибка?

Snimok ehkrana ot 2025-02-07 20-49-14.png (42kb) загружен 2 раз(а).
extensions OID: 1.3.6.1.4.1.10244.4.3 Name=[0] FriendlyName=[1.3.6.1.4.1.10244.4.3]


Код:
console.log("extensions OID: " + oid + " Name=[" + noid+ "] FriendlyName=["+foid+"]");
 if (oid == "1.3.6.1.4.1.10244.4.3") {
alert("Found OID: " + oid + " FriendlyName: " + foid);
}



и смотреть в сторону декодирования encodeddata

Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей *  
#7 Оставлено : 7 февраля 2025 г. 20:14:51(UTC)
Андрей *

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

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

Сказал «Спасибо»: 554 раз
Поблагодарили: 2250 раз в 1756 постах
https://lapo.it/asn1js/

Цитата:
Extension SEQUENCE (2 elem)

extnID OBJECT IDENTIFIER 1.3.6.1.4.1.10244.4.3
extnValue OCTET STRING (27 byte) 301906092B06010401D0040502040C303333334C57533650423031
SEQUENCE (2 elem)
OBJECT IDENTIFIER 1.3.6.1.4.1.10244.5.2
OCTET STRING (12 byte) 0333LWS6PB01



Код:
var EncodedData= yield ext.EncodedData;
var EncodedDataValue = yield EncodedData.Value(); 


extensions OID: 1.3.6.1.4.1.10244.4.3 Name=[0] FriendlyName=[1.3.6.1.4.1.10244.4.3] IsCritical=0
EncodedDataValue: MBkGCSsGAQQB0AQFAgQMMDMzM0xXUzZQQjAx
Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей *  
#8 Оставлено : 7 февраля 2025 г. 20:19:03(UTC)
Андрей *

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

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

Сказал «Спасибо»: 554 раз
Поблагодарили: 2250 раз в 1756 постах
Код:
 var  Value = yield EncodedData.Format();
 


extensions OID: 1.3.6.1.4.1.10244.4.3 Name=[0] FriendlyName=[1.3.6.1.4.1.10244.4.3] IsCritical=0
EncodedDataValue: MBkGCSsGAQQB0AQFAgQMMDMzM0xXUzZQQjAx
Value: 30 19 06 09 2b 06 01 04 01 d0 04 05 02 04 0c 30 33 33 33 4c 57 53 36 50 42 30 31
Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей *  
#9 Оставлено : 7 февраля 2025 г. 20:23:58(UTC)
Андрей *

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

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

Сказал «Спасибо»: 554 раз
Поблагодарили: 2250 раз в 1756 постах
на примере 1.3.6.1.4.1.10244.4.3 - внутри еще вложен OID
и по байтам нужно декодировать asn1
чтобы получить значение из 1.3.6.1.4.1.10244.5.2

Snimok ehkrana ot 2025-02-07 21-11-54.png (25kb) загружен 2 раз(а).
Техническую поддержку оказываем тут
Наша база знаний
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.