Ключевой тег в HTML5
Итак, я наткнулся на этот новый тег в HTML5, <keygen>
. Я не могу понять, для чего он предназначен, как он применяется и как это может повлиять на поведение браузера.
Я понимаю, что этот тег предназначен для шифрования формы, но в чем разница между <keygen>
и наличием SSL-сертификата для вашего домена. Кроме того, что такое атрибут challenge
?
Я не планирую использовать его, поскольку он далеко не реализован в приемлемом диапазоне браузеров, но мне любопытно, что ТОЧНО этот тег. Все, что я могу найти, - это неопределенная документация для куки-резаков без реальных примеров использования.
Изменить:
Я нашел ОЧЕНЬ информативный документ, здесь. Это выполняется как на стороне клиента, так и на стороне сервера.
Мне все еще интересно узнать, какая польза от этого будет в SSL-сертификате домена.
Ответы
Ответ 1
SSL - это идентификация сервера или аутентификация сервера и клиента (взаимная аутентификация).
В большинстве случаев только сервер представляет свой сервер-сертификат во время установления связи SSL, чтобы вы могли убедиться, что на самом деле это сервер, к которому вы хотите подключиться. В некоторых случаях сервер также хочет убедиться, что вы действительно являетесь человеком, которого вы притворяетесь. Для этого вам нужен клиент-сертификат.
Тег <keygen>
генерирует пару открытого и закрытого ключей, а затем создает запрос сертификата. Этот запрос сертификата будет отправлен в центр сертификации (CA). ЦС создает сертификат и отправляет его обратно в браузер. Теперь вы можете использовать этот сертификат для аутентификации пользователя.
Ответ 2
Вам не хватает истории. keygen
был сначала поддержан Netscape, когда он все еще был соответствующим браузером. IE, OTOH, поддерживал одни и те же варианты использования через свои ActiveX API. Opera и WebKit (или даже KHTML), не желая реконструировать весь API Win32, обратный дизайн keygen
.
Он был указан в Web Forms 2.0 (который теперь объединен с спецификацией HTML), чтобы улучшить взаимодействие между браузерами, которые его реализовали.
С тех пор команда IE повторила отказ от реализации keygen
, и спецификация (чтобы избежать превращения в сухую научную фантастику) была изменена, чтобы не требовать реальной реализации:
Примечание. Эта спецификация не указать, какие ключевые типы пользовательских агентов для поддержки - возможно для пользователя агент не поддерживать какие-либо типы ключей в все.
Короче говоря, это не новый элемент, и если вы не можете игнорировать IE, возможно, это не то, что вы хотите.
Ответ 3
Если вы ищете "точно", я бы рекомендовал прочитать RFC.
Элемент keygen
предназначен для создания ключа для аутентификации пользователя, в то время как SSL касается конфиденциальности связи и аутентификации сервера. Цитата из RFC
В этой спецификации не указывается, как использовать закрытый ключ. Ожидается, что после получения структуры SignedPublicKeyAndChallenge (SPKAC) сервер будет генерировать клиентский сертификат и возвращать его пользователю для загрузки; этот сертификат, после загрузки и хранения в хранилище ключей вместе с закрытым ключом, затем может использоваться для аутентификации для служб, использующих TLS и аутентификацию сертификатов.
Ответ 4
Устаревшее
Эта функция удалена из веб-стандартов. Хотя некоторые браузеры все еще могут его поддерживать, он находится в процессе отбрасывания. Избегайте его использования и, если это возможно, обновите существующий код. Быть в курсе, что эта функция может перестать работать в любое время.
Источник
Ответ 5
Документ полезен для разработки того, что является элементом keygen. Его требование возникает в WebID, который, возможно, понимается как часть Semantic Web связанных данных, как показано на https://dvcs.w3.org/hg/WebID/raw-file/tip/spec/index-respec.html#creating-a-certificate 2.1.1
Ответ 6
Это может быть полезно для веб-сайтов, предоставляющих услуги, где люди должны платить за услугу, например, видео по запросу, или новостной сайт для таких профессионалов, как Bloomberg. С помощью этих клавиш люди могут просматривать контент только на своем компьютере, а не одновременно на компьютерах! Вы решаете, как данные хранятся и обрабатываются. вы можете указать файл .asp или .php, который получит переменные, и ваш файл сохранит этот ключ в профиле пользователя. Таким образом, ваши пользователи не смогут входить в систему с другого компьютера, если хотите. Вы можете заставить их проверить их электронную почту, чтобы авторизовать этот новый компьютер, как и пар. В принципе, это позволяет индивидуализировать доступ к услугам, если ваша модель лицензирования зависит от каждой машины, например операционной системы.
Вы можете проверить спецификации здесь:
http://www.w3.org/TR/html-markup/keygen.html