(2014-08-05 15:05:24 отредактировано k0dg1k)

rutoken plugin authenticate openssl

Добрый день.
Меня интересует каким способом происходит проверка при авторизации в Демо Банке (http://demobank.rutoken.ru/Home/Login) ?
На сервер приходит последовательность символов "rnd" и подпись этой последовательности "cms", с помощью какой команды происходит проверка?

Re: rutoken plugin authenticate openssl

Аутентификация на портале
Общая схема аутентификации, используемая в Рутокен Плагин, выглядит следующим образом:

1.сервер формирует начальную последовательность случайных данных (строку salt) и отправляет ее на клиент
2. при передаче salt в функцию плагина authenticate данная последовательность дополняется дополнительными случайными данными размером в 32 символа, и происходит подпись итоговой последовательности на выбранном пользователем сертификате в формате CMS attached
3. подпись отправляется на сервер
4. на сервере происходит проверка подписи
5. из CMS attached сообщения извлекается итоговая случайная последовательность, “отсоединяется”  salt и происходит сравнение
6. в случае успешной проверки пользователь аутентифицируется на основе сертификата, извлеченного из сообщения CMS

Проверить подпись под сообщением CMS attached, которое выгружено в файл, можно так:
openssl cms -engine gost -verify -in [подписанный файл] -inform PEM -CAfile ca.crt -out [файл, в который будет сохранено содержимое]

-CAfile - это корневой, -out - это файл, в который будет сохранены данные (шаг 5).

Можно, конечно, использовать API openssl, но тут уже нужно знать, на чем у вас написано WEB-приложение.

И, по возможности, отпишите мне в личку, какой проект вы делаете

Re: rutoken plugin authenticate openssl

Виктор Ткаченко пишет:

Аутентификация на портале
Общая схема аутентификации, используемая в Рутокен Плагин, выглядит следующим образом:

1.сервер формирует начальную последовательность случайных данных (строку salt) и отправляет ее на клиент
2. при передаче salt в функцию плагина authenticate данная последовательность дополняется дополнительными случайными данными размером в 32 символа, и происходит подпись итоговой последовательности на выбранном пользователем сертификате в формате CMS attached
3. подпись отправляется на сервер
4. на сервере происходит проверка подписи
5. из CMS attached сообщения извлекается итоговая случайная последовательность, “отсоединяется”  salt и происходит сравнение
6. в случае успешной проверки пользователь аутентифицируется на основе сертификата, извлеченного из сообщения CMS

Проверить подпись под сообщением CMS attached, которое выгружено в файл, можно так:
openssl cms -engine gost -verify -in [подписанный файл] -inform PEM -CAfile ca.crt -out [файл, в который будет сохранено содержимое]

-CAfile - это корневой, -out - это файл, в который будет сохранены данные (шаг 5).

Можно, конечно, использовать API openssl, но тут уже нужно знать, на чем у вас написано WEB-приложение.

И, по возможности, отпишите мне в личку, какой проект вы делаете

Это все клёво, и даже работает, но есть поправка:

Для того, сто бы openssl "понял" это CMS, его надо "обернуть" следующим образом:
-----BEGIN PKCS7-----
CMS, полученный от плагина
-----END PKCS7-----

Где делать эту обертку, перед отправкой или уже на сервере -- не принципиально, но на "чистый блок CMS" openSSL ругается:

Error reading S/MIME message
140212894992032:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:703:Expecting: CMS

Re: rutoken plugin authenticate openssl

Спасибо за уточнение

Re: rutoken plugin authenticate openssl

Не работает площадка демонстрационная для веб сайта скачаная у вас с сайта
Ключевая пара генерируется и записываться в токен ецп
Проблема в том что записи не попадают в БД подскажите в чем может быть причина

Re: rutoken plugin authenticate openssl

о какой площадке идет речь?