Кейген тег в HTML5 - PullRequest
       10

Кейген тег в HTML5

74 голосов
/ 21 декабря 2010

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

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

Я не планирую использовать его, поскольку он далек от реализации в приемлемом диапазоне браузеров, но мне любопытно, что именно делает этот тег. Все, что я могу найти, - это расплывчатая документация по печенькам без реальных примеров использования.


Редактировать:

Я нашел ОЧЕНЬ информативный документ, здесь . Это выполняется как на стороне клиента, так и на стороне сервера для реализации тега keygen.

Мне по-прежнему любопытно, что это даст по сравнению с SSL-сертификатом домена.

Ответы [ 6 ]

32 голосов
/ 31 января 2011

SSL относится к «идентификации сервера» или «аутентификации сервера И клиента (взаимная аутентификация)».

В большинстве случаев только сервер представляет свой сертификат сервера во время рукопожатия SSL, чтобы вы могли убедиться, чтоэто действительно сервер, к которому вы ожидаете подключиться.В некоторых случаях сервер также хочет убедиться, что вы действительно тот человек, которым вы притворяетесь.Для этого вам понадобится сертификат клиента.

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

24 голосов
/ 31 января 2011

Вам не хватает истории. keygen впервые был поддержан Netscape, когда он все еще был релевантным браузером. IE, OTOH, поддерживал те же варианты использования через свои ActiveX API. Opera и WebKit (или даже KHTML), не желая перепроектировать весь Win32 API, вместо этого перепроектировали keygen.

Он был указан в Web Forms 2.0 (который теперь объединен со спецификацией HTML), чтобы улучшить взаимодействие между браузерами, которые его реализовали.

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

Примечание: данная спецификация не указать, какие ключевые типы пользовательских агентов поддерживать - это возможно для пользователя Агент не поддерживает какие-либо ключевые типы в все.

Короче говоря, это не новый элемент, и если вы не можете игнорировать IE, это, вероятно, не то, что вы хотите.

7 голосов
/ 21 декабря 2010

Если вы ищете "точно", тогда я рекомендую прочитать RFC .

Элемент keygen предназначен для создания ключа для аутентификации пользователя, в то время как SSL заботится о конфиденциальности связи и аутентификации сервера. Цитата из RFC

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

5 голосов
/ 31 марта 2017

устарело

Эта функция удалена из веб-стандартов.Хотя некоторые браузеры все еще могут поддерживать его, он находится в процессе удаления.Избегайте его использования и обновляйте существующий код, если это возможно.Имейте в виду, что эта функция может перестать работать в любое время.

Источник

0 голосов
/ 28 марта 2013

Это может быть полезно для веб-сайтов, которые предоставляют услуги, где люди должны платить за услугу, например, видео по запросу, или новостной сайт для профессионалов, таких как Bloomberg. С помощью этих клавиш люди могут просматривать контент только на своем компьютере, а не на одновременных компьютерах! Вы сами решаете, как данные хранятся и обрабатываются. Вы можете указать файл .asp или .php, который будет получать переменные, и ваш файл будет хранить этот ключ в профиле пользователя. Таким образом, ваши пользователи не смогут войти с другого компьютера, если вы захотите. Вы можете заставить их проверить свою электронную почту, чтобы авторизовать этот новый компьютер, как это делает Steam. По сути, это позволяет индивидуализировать доступ к сервису, если ваша модель лицензирования для каждой машины, например, для операционной системы.

Вы можете проверить спецификации здесь: http://www.w3.org/TR/html-markup/keygen.html

0 голосов
/ 28 декабря 2012

Документ полезен для уточнения того, что является ключевым элементом.Его требование возникает в WebID, который, возможно, понимается как часть семантической сети связанных данных, как видно по https://dvcs.w3.org/hg/WebID/raw-file/tip/spec/index-respec.html#creating-a-certificate 2.1.1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...