Пишу, по большей части, про историю, свою жизнь и немного про программирование.

Забытый тег: KEYGEN

Реализация парсеров HTML различных браузеров содержит массу забытых тегов, о существовании которых помнят единицы, да и тем уже незачем их использовать. Один из таких тегов — KEYGEN, придуман, если не ошибаюсь, компанией Netscape для своего браузера (ещё до того как Netscape стал использовать Mozilla), сожержит два атрибута — name и challenge и используется в составе форм (FORM).

Под Windows тег поддерживается всеми основными браузерами (с разным успехом) и не поддерживается альтернативным (вплоть по версии 8.0 beta2). В настоящий момент тег почти не используется. Прошло много лет и члены комитета WHATWG (основное детище который — куча браузеров и стандарт HTML5) вспомнили об этом теге.

Использование вкратце:

<form>
   <keygen name="pubkey" challenge="случайная строка">
   <input type="submit" value="Сгенерировать">
 </form>

Если ваш браузер поддерживает тег KEYGEN, вы увидите список из нескольких элементов, содержимое его зависит от браузера, но сводится к одному — длине ключа. При нажатии на кпопку отправки формы браузер сгенерирует пару ключей, публичный ключ (в формате SPKAC) будет отправлен на сервер (в поле, указанном в атрибуте «name» тега).

Сервер, получив сертификат, готовит специальный файл подписывает его и отсылает назад браузеру с заголовоком «application/x-x509-user-cert», вся процедура подробно описана в соответствующем письме из рассылки WHATWG.

После чего веб-сервер, настроенный соответствующим образом, может авторизовывать пользователя по клиентскому сертификату.

4 комментария
ELV1S (elv1s.ru) 2008

Я только один раз видел, чтобы этот тег использовался. Тут: https://www.myopenid.com/settings_authentication

Евгений Степанищев (bolknote.ru) 2008

Комментарий для elv1s.ru:

Если войдёт в HTML5 пользоваться им будут почаще.

apocat.myopenid.com 2010

УЖЕ ЕСТЬ :) HTML5

Евгений Степанищев (bolknote.ru) 2010

Комментарий для apocat.myopenid.com:

О, да! http://dev.w3.org/html5/markup/keygen.html