Тег кейгену в HTML5


75

Таким чином , я натрапив на цей новий тег в HTML5, <keygen>. Я не можу повністю зрозуміти, для чого він призначений, як його застосовують і як це може вплинути на поведінку браузера.

Я розумію, що цей тег призначений для шифрування форми, але в чому різниця між <keygen>наявністю сертифіката SSL для вашого домену. Крім того, що таке challengeатрибут?

Я не планую використовувати його, оскільки він далеко не реалізований у прийнятному діапазоні браузерів, але мені цікаво, що ВІСНО робить цей тег. Все, що я можу знайти, це розмита документація про вирізання файлів cookie без реальних прикладів використання.


Редагувати:

Я знайшов ДУЖЕ інформативний документ тут . Це проходить як реалізацію тегу кейгену на стороні клієнта, так і на стороні сервера.

Мені все ще цікаво, якою буде вигода від цього над доменним SSL-сертифікатом.


Ось якась документація.
— Деніз Доган

1
Також Марк Пілігрим дає коротке пояснення тут: blog.whatwg.org/this-week-in-html5-episode-35 з безліччю посилань.
— Кай

На частину вашого запитання, схоже, немає відповіді. Завдання, пов'язане з <keygen>елементом, може бути використано для надання парольної фрази з SPKAC. Після того, як запит на підпис сертифіката клієнта буде оброблений центром сертифікації та отримане налаштування сертифіката клієнта в браузері користувачів, виклик може бути використаний як перевірка ідентичності, подібно до того, як це робить типовий пароль у випадку спільного використання або кількох користувачів на одному комп'ютері. термінал.
— jas-

Чи можу я використовувати <keygen>у своєму html formбез ssl сертифікат?
— 151291,

Відповіді:


32

SSL - це "ідентифікація сервера" або "автентифікація сервера та клієнта (взаємна автентифікація)".

У більшості випадків лише сервер подає свій сертифікат сервера під час рукостискання SSL, щоб ви могли переконатися, що це справді той сервер, до якого ви очікуєте підключитися. У деяких випадках сервер також хоче підтвердити, що ви справді є людиною, якою ви видаєте себе. Для цього вам потрібен сертифікат клієнта.

<keygen>Тег генерує / закриті пару відкритого ключа , а потім створює запит на сертифікат. Цей запит на сертифікат буде надіслано до Центру сертифікації (ЦС). Центр сертифікації створює сертифікат і відправляє його назад у браузер. Тепер ви можете використовувати цей сертифікат для автентифікації користувачів.


1
Чи можу я використовувати <keygen>у своєму html formбез ssl сертифікат?
— 151291,

24

Вам не вистачає історії. keygenвперше був підтриманий Netscape, коли він ще був відповідним браузером. IE, OTOH, підтримував ті самі випадки використання через свої API ActiveX. Opera і WebKit (або навіть KHTML), які не бажають проводити реверсивне проектування всього Win32 API, keygenзамість цього здійснювали зворотну інженерію .

Це було зазначено у Web Forms 2.0 (яка тепер об’єднана у специфікацію HTML), з метою покращення взаємодії між браузерами, які її реалізували.

З тих пір команда IE повторила свою відмову впроваджувати keygen, і специфікація (щоб уникнути перетворення в суху наукову фантастику) була змінена, щоб не вимагати фактичного впровадження:

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

Коротше кажучи, це не новий елемент, і якщо ви не можете проігнорувати IE, це, мабуть, не те, що ви хочете.


7

Якщо ви шукаєте "точно", я б рекомендував прочитати RFC .

keygenЕлемент для створення ключа для аутентифікації користувача при SSL стурбована про конфіденційність зв'язку і аутентифікації сервера. Посилання з RFC:

Ця специфікація не вказує, як використовувати генерований закритий ключ. Очікується, що після отримання структури SignedPublicKeyAndChallenge (SPKAC) сервер сформує сертифікат клієнта та запропонує його користувачеві для завантаження; цей сертифікат, завантажений та збережений у сховищі ключів разом із закритим ключем, може бути використаний для автентифікації служб, що використовують TLS та автентифікацію сертифікатів.


Тоді обидва методи шифрують комунікацію, але <keygen>ключі стосуються ідентифікації користувача, де як SSL - це ідентифікація сервера?
— Craige

1
RFC є публікацією від IETF. Посилання, яке ви надаєте, вказує на проект специфікації W3C.
— Ортомала Локні,

5

Застаріле

Ця функція була вилучена із веб-стандартів. Хоча деякі браузери все ще можуть його підтримувати, він перебуває в стадії видалення. Уникайте його використання та по можливості оновлюйте існуючий код. Майте на увазі, що ця функція може перестати працювати в будь-який час.

Джерело



-2

Це може бути корисно для веб-сайтів, що надають послуги, де людям потрібно платити за послугу, наприклад, відео на замовлення, або веб-сайту новин для таких професіоналів, як Bloomberg. За допомогою цих клавіш люди можуть переглядати вміст лише на своєму комп’ютері, а не на одночасному комп’ютері! Ви самі вирішуєте, як зберігати та обробляти дані. Ви можете вказати файл .asp або .php, який буде отримувати змінні, і ваш файл зберігатиме цей ключ у профілі користувача. Таким чином, ваші користувачі не зможуть увійти з іншого комп'ютера, якщо ви цього хочете. Ви можете змусити їх перевірити свою електронну пошту, щоб авторизувати цей новий комп'ютер, як це робить пара. В основному це дозволяє індивідуалізувати доступ до сервісу, якщо ваша модель ліцензування відповідає машині, як-от операційна система.

Ви можете перевірити специфікації тут: http://www.w3.org/TR/html-markup/keygen.html


5
Ваше використання, насправді, насправді не працює. Ніщо не заважає експортувати ключ та сертифікат із браузера та експортувати їх на іншу машину.
— Бруно

Думаю, ви не зовсім розумієте, для чого був цей елемент.
— Матті Вірккунен
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.