Наc интересует вариант "контейнера": одной ключевой паре соответствует один сертификат.
Выписываем сертификат следующим образом:
1) pluginObject.generateKeyPair(selectedDeviceId, undefined, sn,
{publicKeyAlgorithm: pluginObject.PUBLIC_KEY_ALGORITHM_RSA, id: sn},)
2) pluginObject.createPkcs10(selectedDeviceId, sn, subject, {}, {hashAlgorithm: pluginObject.HASH_TYPE_SHA256, id: sn})
3) csr подписываем и получаем сертификат
4) pluginObject.importCertificate(selectedDeviceId, cert, pluginObject.CERT_CATEGORY_USER)
Для настройки Google Chrome на Ubuntu для работы с сертификатами с токена используем команду:
modutil -dbdir sql:.pki/nssdb/ -add "My Token" -libfile /path/to/librtpkcs11ecp.so
(https://linuxkamarada.com/en/2019/09/26 … 5cBthxByJE)
Далее хотим выполнить аутентификацию на сайте через Google Chrome на Ubuntu. Если на токене сертификатов больше одного, то при открытие сайта в окне "Выбор сертификата" показывается только один сертификат, а если зайти в chrome://settings/certificates, то там видны все сертификаты.
Пример окна "Выбор сертификата":
(my_token_cert7 имеет CKA_LABEL=Rutoken Plugin)
Если открыть chrome://settings/certificates и нажать на просмотр сертификата, то там пишется "Инструмент просмотра сертификатов Rutoken ECP <no label>:Rutoken Plugin", где строка после ":" это CKA_LABEL сертификата. То есть для всех сертификатов, выписанных с помощью плагина, будет одно CKA_LABEL="Rutoken Plugin".
Пример окна "просмотр сертификата" сертификата my_token_cert7:
Теперь выписываем сертификат с помощью PKCS11 без плагина следующим образом:
CK_ATTRIBUTE certificateTemplate[] =
{
{ CKA_VALUE, certDer, certSize },
{ CKA_CLASS, &certificateObject, certificateObjectSize },
{ CKA_ID, &keyPairId, keyPairIdSize },
{ CKA_LABEL, &LabelName, LabelNameSize }, // задаем уникальный label
...
};
rv = functionList->C_CreateObject(session, certificateTemplate, arraysize(certificateTemplate),
&certificate);
И если выписать сертификат таким образом, т.е. если задавать уникальные CKA_LABEL объектов именно сертификатов (а не ключевой пары), то в окне "Выбор сертификата" видны все сертификаты.
Пример окна "Выбор сертификата" после задания уникальных меток:
(my_token_cert10 и my_token_cert11 имеет CKA_LABEL отличный между собой и отличный от CKA_LABEL my_token_cert7)
Пример окна "просмотр сертификата" сертификата my_token_cert11:
Интересует возможность изменить CKA_LABEL для сертификата с помощью Рутокен Плагин API, чтобы иметь возможность видеть все сертификаты в окне "Выбор сертификата" при аутентификации.