Keygen标签在HTML5中

所以我遇到了HTML5中的这个新标签, <keygen> 。 我无法弄清楚它是什么,它是如何应用的,以及它如何影响浏览器的行为。

我知道这个标签是用于表单encryption的,但是<keygen>和你的域名有一个SSL证书有什么不同。 另外, challenge属性是什么?

我没有打算使用它,因为它远远不是在可接受的浏览器范围内实现的,但我很好奇这个标签究竟干什么。 所有我能find的是模糊的cookies文件,没有使用的真实例子。


编辑:

我在这里find了非常丰富的文档。 这贯穿了keygen标签的客户端和服务器端的实现。

我仍然好奇这对于域SSL证书的好处是什么。

SSL是关于“服务器标识”或“服务器和客户端authentication(相互authentication)”的。

在大多数情况下,只有服务器在SSL握手期间提供服务器证书,以便确保这是您期望连接的服务器。 在某些情况下,服务器也想validation确实是你假装的人。 为此,你需要一个客户端证书。

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

你错过了一些历史。 当它仍然是一个相关的浏览器时, keygen首先得到了Netscape的支持。 IE,OTOH通过ActiveX API支持相同的用例。 Opera和WebKit(甚至是KHTML),不愿意对整个Win32 API进行反向工程,而是反向工程的keygen

它是在Web Forms 2.0(现已合并到HTML规范中)中指定的,以便改进实现它的浏览器之间的互操作性。

从那以后,IE小组重申拒绝执行keygen ,为了避免变成干燥的科幻小说,规范已经改变,不需要实际执行:

注意:本规范没有指定用户代理支持哪些密钥types – 用户代理可能根本不支持任何密钥types。

总之,这不是一个新的元素,除非你可以忽略IE,否则可能不是你想要的。

如果你正在寻找“确切”,那么我build议阅读RFC 。

keygen元素用于创build用于用户authentication的密钥,而SSL则担心通信隐私和服务器authentication。 从RFC引用

本规范没有规定如何使用生成的私钥。 预计收到SignedPublicKeyAndChallenge(SPKAC)结构后,服务器将生成一个客户端证书并提供给用户下载; 此证书一旦下载并与私钥一起存储在密钥存储区中,就可以用于向使用TLS和证书身份validation的服务进行身份validation。

弃用

该function已从Web标准中删除。 尽pipe一些浏览器可能仍然支持它,但它正在被丢弃。 避免使用它,并尽可能更新现有的代码。 请注意,此function可能随时停止工作。

资源

该文档有助于详细说明什么是keygen元素。 它的要求出现在可能被理解为关联数据的语义网的一部分的WebID中,如在https://dvcs.w3.org/hg/WebID/raw-file/tip/spec/index-respec.html#creating-证书; 2.1.1

这对于提供服务的网站可能很有用,人们需要为服务付费,比如video点播,或者像彭博社这样的专业人士的新闻网站。 有了这个键,人们只能在电脑上观看内容,而不能同时在电脑上观看! 您决定如何存储和处理数据。 您可以指定一个.asp或.php文件来接收这些variables,并且您的文件将把该密钥存储在用户configuration文件中。 这样,您的用户将无法从其他计算机login,如果你想。 您可能会强制他们检查他们的电子邮件来授权新电脑,就像蒸汽一样。 基本上它允许个性化服务访问,如果您的许可模式是每台机器,如操作系统。

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