Для привязки пользователя к существующей инфраструктуре открытых ключей (PKI) в общем случае системе необходимо произвести следующую последовательность действий:
Примечание
Предложенная схема работы описывает только основные этапы встраивания JC-WebClient в PKI-инфраструктуру. В реальных системах их количество и состав могут отличаться.
Из перечисленных задач часть должна быть реализована на уровне встраиваемого Web-приложения, в частности: создание контейнера с ключевой парой и формирование запроса на получение сертификата. Для решения этих задач используются следующие команды:
Пример с командами createKeyPair и genCSR
// Идентификатор токена
var tokenDesc = 0;
// Предъявить PIN-код
JCWebClient2.bindToken({
args: {
tokenID: tokenDesc,
pin: "my pin"
}
});
// Создать контейнер с ключевой парой и присвоить ему имя
var keyPairID = JCWebClient2.createKeyPair({
args: {
paramSet: "XA",
description: "my description"
}
});
// Задать отличительное имя пользователя (Distinguished Name (DN)),
// включающее стандартное имя (Common Name, (CN))
var dn = {
'CN': 'my CN',
'C': 'RU'
};
// Задать расширения, определяющие область применения закрытого ключа
var exts = {
'keyUsage': 'Digital Signature'
};
// Сгенерировать PKCS10 запрос на сертификат
var csr = JCWebClient2.genCSR({
args: {
id: keyPairID,
dn: dn,
exts: exts
}
});
CSR
) необходимо
направить в удостоверяющий центр.Пример
// Записать сертификат, полученный от УЦ и присвоенный переменной
// certificate
var contID = JCWebClient2.writeUserCertificate({
args: {
keyPairID: keyPairID,
cert: certificate
}
});
// Записать сертификат сервера
JCWebClient2.writeServerCertificate({
args: {
contID: contID,
cert: serverCertificate
}
});
Согласно Федеральному закону об электронной подписи (ФЗ-63) квалифицированный сертификат – это сертификат, выданный аккредитованным удостоверяющим центром или доверенным лицом аккредитованного удостоверяющего центра либо федеральным органом исполнительной власти, уполномоченным в сфере использования электронной подписи. Требования к подобному сертификату приводятся в приложении к приказу ФСБ Об утверждении требования к форме квалифицированного сертификата ключа проверки электронной подписи (№ 23041 от 27 января 2012 г.).
Сгенерировать запрос на квалифицированный сертификат с помощью JC-WebClient можно следующим образом:
Примечание
Содержание и количество полей сертификата могут изменяться в зависимости от политики удостоверяющего центра.
// Сгенерировать PKCS#10 запрос сертификат с перечисленными полями
var csr = JCWebClient2.genCSR({
args: {
id: keyPairID,
dn: {
'2.5.4.4': 'Иванов',
'2.5.4.42': 'Иван',
'2.5.4.12': 'Директор департамента',
'2.5.4.9': 'ул. Ивановская 99',
'CN': 'Иванов Иван',
'2.5.4.11': 'Отдел маркетинга',
'O': 'ОАО "Серьезные люди"',
'L': 'г. Москва',
'2.5.4.8': '79 г. Москва',
'C': 'RU',
'1.2.840.113549.1.9.1': 'example@domain.ru',
'1.2.643.3.131.1.1': 'NUMERICSTRING:000000000076',
'1.2.643.100.1': 'NUMERICSTRING:0000000000024',
'1.2.643.100.3': 'NUMERICSTRING:00000000052'
},
exts: {
'certificatePolicies': ['1.2.643.100.113.1', '1.2.643.100.113.2'],
'keyUsage': ['digitalSignature', 'keyEncipherment', 'nonRepudiation', 'dataEncipherment'],
'extendedKeyUsage': ['1.3.6.1.5.5.7.3.2', '1.3.6.1.5.5.7.3.4']
}
}
});