HTML5中的Keygen标签


75

因此,我在HTML5中遇到了这个新标记<keygen>。我不太清楚它的用途,如何应用以及它如何影响浏览器的行为。

我知道该标签用于表单加密,但是<keygen>您的域与拥有SSL证书之间有什么区别?另外,challenge属性是什么?

我不打算使用它,因为它远未在可接受的浏览器范围内实现,但我对该标记的确切用途感到好奇。我所能找到的只是模糊的cookie切割器文档,没有真正的用法示例。


编辑:

在这里找到了非常有用的文件。这贯穿了keygen标签的客户端和服务器端实现。

我仍然对此域SSL证书有什么好处感到好奇。


是一些好的文档。
Deniz Dogan '12

1
另外,马克·皮尔格里姆(Mark Pilgrim)在这里给出了一个简短的解释:blog.whatwg.org/this-week-in-html5-episode-35,其中包含大量链接。

您的部分问题似乎没有得到回答。与<keygen>元素关联的挑战可用于提供与的密码短语SPKAC。一旦证书颁发机构处理了客户端证书签名请求并在用户浏览器中设置了客户端证书设置,则可以将质询用作身份验证,就像在同一计算机上共享或多个用户的情况下,典型密码一样终奌站。
jas-2014年

我可以<keygen>form没有ssl证书的html中使用吗?
151291 2016年

Answers:


32

SSL与“服务器标识”或“服务器与客户端身份验证(相互身份验证)”有关。

在大多数情况下,只有服务器在SSL握手期间显示其服务器证书,以便您可以确保这确实是您希望连接的服务器。在某些情况下,服务器还希望验证确实是您所假装的人。为此,您需要客户证书。

<keygen>标签生成公钥/私钥对,然后创建一个证书请求。该证书请求将发送到证书颁发机构(CA)。CA创建一个证书并将其发送回浏览器。现在您可以使用此证书进行用户身份验证。


1
我可以<keygen>form没有ssl证书的html中使用吗?
151291 2016年

24

您错过了一些历史。keygen最初还是由Netscape支持,当时它仍是一个相关的浏览器。IE,OTOH通过其ActiveX API支持相同的用例。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草案规范。
Ortomala Lokni 2014年

5

不推荐使用

此功能已从Web标准中删除。尽管某些浏览器可能仍支持它,但是它正在被删除。避免使用它,并尽可能更新现有代码。请注意,此功能可能随时停止起作用。

资源



-2

对于提供服务的网站(人们需要为该服务付费)(例如点播视频)或针对像彭博社这样的专业人士的新闻网站,这可能很有用。使用此键,人们只能在自己的计算机中观看内容,而不能在同时的计算机中观看!您决定如何存储和处理数据。您可以指定将接收变量的.asp或.php文件,并且您的文件会将该密钥存储在用户配置文件中。这样,您的用户将无法从其他计算机登录。您可以像Steam一样强迫他们检查他们的电子邮件以授权该新计算机。基本上,如果您的许可模式是每台计算机(例如操作系统),则它允许个性化服务访问。

您可以在此处查看规格:http : //www.w3.org/TR/html-markup/keygen.html


5
您的用例并没有真正起作用。没有什么可以阻止从浏览器导出密钥和证书并将其导出到其他计算机。
布鲁诺

我认为您不太了解该元素的用途。
Matti Virkkunen
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.