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

Уведомление

Icon
Error

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

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

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

Сказал(а) «Спасибо»: 1 раз
Здравствуйте.
Помогите, пожалуйста, с вызовом диалога со списком сертификатов в Windows, по нажатию кнопки, например, на обычной html странице.
Я понимаю, что для этого понадобится использовать как минимум JS и, возможно, плагин крипто про,
но я не знаю как подступиться к этой связке :( Какую библиотеку использовать для этого?
Моя цель - это после выбора сертификата, из этого окна, взять из сертификата несколько полей и обработать их.
Обработка мне не важно где будет происходить (клиент или сервер). Главное достать, например, владельца сертификата.

Направьте хотя бы тезисно, ссылками на нужный раздел в доке, очень хочется разобраться в этом вопросе.
Спасибо!
download.jpg (10kb) загружен 1 раз(а).

Отредактировано пользователем 16 сентября 2021 г. 9:21:13(UTC)  | Причина: Не указана

Offline Андрей *  
#2 Оставлено : 16 сентября 2021 г. 9:51:42(UTC)
Андрей *

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

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

Сказал «Спасибо»: 388 раз
Поблагодарили: 1600 раз в 1231 постах
Здравствуйте.
Откройте демо страницу с плагином и посмотрите реализацию в html/js
Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей *  
#3 Оставлено : 16 сентября 2021 г. 10:00:12(UTC)
Андрей *

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

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

Сказал «Спасибо»: 388 раз
Поблагодарили: 1600 раз в 1231 постах
Главная > Продукты > Дополнительное ПО > КриптоПро ЭЦП Browser plug-in

пункт 3. Проверьте работу установленного плагина

или ниже ссылка на список примеров.

Далее - щелкнуть ПКМ, просмотреть исходный код страницы или попроще - сохранить страницу в файл и изучать вызовы js.


Документация к плагину:
https://docs.cryptopro.ru/cades/plugin
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Андрей * за этот пост.
soutssv оставлено 20.09.2021(UTC)
Offline soutssv  
#4 Оставлено : 20 сентября 2021 г. 19:06:47(UTC)
soutssv

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

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

Сказал(а) «Спасибо»: 1 раз
Андрей, спасибо.
Получилось запустить копированием html разметки из демо-страницы и
(async_code|cadesplugin_api|Code|cryptoapi|es6-promise.min|ie_eventlistner_polyfill|nmcades_plugin_api).js
в директорию js в директорию с сайтом.
Вопрос по доработке строк с выбором сертификатов. Можно ли туда добавить дату окончания срока действия сертификата?
1.PNG (8kb) загружен 2 раз(а).
Если есть дока с описанием методов - было бы здорово.

Я понимаю, что где-то тут:
Код:
CertificateAdjuster.prototype.GetCertInfoString = function(certSubjectName, certFromDate)
{
    return this.extract(certSubjectName,'CN=') + "; Выдан: " + this.GetCertDate(certFromDate);
}


но что добавлять не пойму. Предположил, что certToDate или certTillDate, но увы :)

Отредактировано пользователем 20 сентября 2021 г. 19:10:05(UTC)  | Причина: Не указана

Offline Андрей *  
#5 Оставлено : 20 сентября 2021 г. 19:14:20(UTC)
Андрей *

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

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

Сказал «Спасибо»: 388 раз
Поблагодарили: 1600 раз в 1231 постах
Автор: soutssv Перейти к цитате
Можно ли туда добавить дату окончания срока действия сертификата?


в Code.js

Цитата:
Цитата:
"Действителен до: <b>" +
certObj.GetCertTillDate()


CertificateObj.prototype.GetCertTillDate = function()
{
return this.DateTimePutTogether(this.certTillDate);
}



Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей *  
#6 Оставлено : 20 сентября 2021 г. 19:18:07(UTC)
Андрей *

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

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

Сказал «Спасибо»: 388 раз
Поблагодарили: 1600 раз в 1231 постах
+ в async_code.js - пример:

Цитата:
document.getElementById(args[2] + "from").innerHTML = "Выдан: <b>" + Adjust.GetCertDate(ValidFromDate) + " UTC<b>";
document.getElementById(args[2] + "till").innerHTML = "Действителен до: <b>" + Adjust.GetCertDate(ValidToDate) + " UTC<b>";


Snimok ehkrana ot 2021-09-20 20-17-41.png (78kb) загружен 4 раз(а).
Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей *  
#7 Оставлено : 20 сентября 2021 г. 19:20:38(UTC)
Андрей *

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

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

Сказал «Спасибо»: 388 раз
Поблагодарили: 1600 раз в 1231 постах
Документация:

Объект CPCertificate

Цитата:
для данного объекта реализованы только следующие методы и свойства: Export, Import, GetInfo, HasPrivateKey, IsValid, IssuerName, SerialNumber, SubjectName, Thumbprint, ValidFromDate, ValidToDate, Version, ExtendedKeyUsage, KeyUsage, PublicKey, PrivateKey, BasicConstraints.
Техническую поддержку оказываем тут
Наша база знаний
Offline soutssv  
#8 Оставлено : 20 сентября 2021 г. 19:23:23(UTC)
soutssv

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

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

Сказал(а) «Спасибо»: 1 раз
Автор: Андрей * Перейти к цитате
Документация:

Объект CPCertificate

Цитата:
для данного объекта реализованы только следующие методы и свойства: Export, Import, GetInfo, HasPrivateKey, IsValid, IssuerName, SerialNumber, SubjectName, Thumbprint, ValidFromDate, ValidToDate, Version, ExtendedKeyUsage, KeyUsage, PublicKey, PrivateKey, BasicConstraints.


Описание исчерпывающее. Как раз эта информация и нужна для передачи на сервер. Ещё раз благодарю.
Offline Андрей *  
#9 Оставлено : 20 сентября 2021 г. 19:23:31(UTC)
Андрей *

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

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

Сказал «Спасибо»: 388 раз
Поблагодарили: 1600 раз в 1231 постах
Код:

CertificateAdjuster.prototype.GetCertInfoString = function(certSubjectName, certFromDate, CertToDate)
{
  return this.GetCertDate(certFromDate) +" - " +
	this.GetCertDate(CertToDate)+" "+
	this.extract(certSubjectName,'CN=')+" "+ 
    this.extract(certSubjectName,'SN=')	+" "+ 
    this.extract(certSubjectName,'G=')+" ИНН="+ 
    this.extract(certSubjectName,'ИНН=')+
    this.extract(certSubjectName,'INN='); // + через OID-ы... 

}


и вызов:
new CertificateAdjuster().GetCertInfoString(yield cert.SubjectName, ValidFromDate, ValidToDate);
Техническую поддержку оказываем тут
Наша база знаний
Offline soutssv  
#10 Оставлено : 21 сентября 2021 г. 20:08:32(UTC)
soutssv

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

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

Сказал(а) «Спасибо»: 1 раз
Туго идёт у меня JS. С датой разобрался а с выводом SerialNumber застрял.
При таком всё ломается:
Код:
var dateObj = new Date();
try {
      var ValidFromDate = new Date((yield cert.ValidFromDate));
      var ValidToDate = new Date((yield cert.ValidToDate));
      var SerialNumber = new yield cert.SerialNumber;
      oOpt.text = new CertificateAdjuster().GetCertInfoString(yield cert.SubjectName, ValidFromDate, ValidToDate, SerialNumber);
}



Пробовал так, но ничего ((
Код:
CertificateAdjuster.prototype.GetSerialNumber = function(certSubjectName)
{
    return this.extract(certSubjectName, 'SN=');
}


Код:
CertificateAdjuster.prototype.GetCertInfoString = function(certSubjectName, certFromDate, certToDate)
{
    return this.extract(certSubjectName,'CN=') + "; Выдан: " + this.GetCertDate(certFromDate) + "; Годен до: "  + this.GetCertDate(certToDate) + "; SN: "+ this.extract(certSubjectName, "SN=");
}


Offline Андрей *  
#11 Оставлено : 21 сентября 2021 г. 22:36:53(UTC)
Андрей *

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

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

Сказал «Спасибо»: 388 раз
Поблагодарили: 1600 раз в 1231 постах
SN в Subject это surname (фамилия), OID 2.5.4.4;

Серийный номер:

вместо
Цитата:

var SerialNumber = new yield cert.SerialNumber;


указать:
Цитата:

var SerialNumber = yield cert.SerialNumber;
Техническую поддержку оказываем тут
Наша база знаний
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.