Тег кейгену в 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.