Генерация сертификатов на стороне клиента в браузере и подписание на сервере

Можно ли запросить генерацию клиентской пары ключей в браузере и отправить открытый ключ серверному CA для прозрачной подписи? Затем установить подписанный сертификат в браузер пользователя?

Сценарий:

  1. Пользователь открывает https://examle. com/ веб-страницу, идентификация сервера проверяется
  2. Пользователь запрашивает создание учетной записи
  3. Пара ключей генерируется в браузере пользователя и не раскрывается серверу/ЦА
  4. Публичный ключ отправляется на сервер для подписания
  5. Сервер подписывает ключ и генерирует сертификат
  6. Сертификат отправляется клиенту и устанавливается в браузер вместе с закрытым ключом

При следующем подключении клиента к серверу его личность проверяется на основе сертификата клиента.

Было бы неплохо, если бы сервер мог заставить/подсказать клиенту защитить его закрытый ключ с помощью шифрования паролем.

Я видел онлайн-банкинг, использующий java-апплет для этой задачи. Возможно ли это сделать, используя родные возможности браузера? Решение на Apache/PHP или Node.js будет приветствоваться.

16
задан Kitten 8 February 2012 в 16:32
поделиться