HTML5中的Keygen标记

Cra*_*ige 75 html security ssl html5

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

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

我不打算使用它,因为它远远没有在可接受的浏览器范围内实现,但我很好奇这个标签的作用是什么.我所能找到的只是模糊的千篇一律的文档,没有真正的用法示例.


编辑:

在这里找到了非常丰富的信息.这贯穿了keygen标记的客户端和服务器端实现.

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

小智 32

SSL是关于"服务器标识"或"服务器AND客户端认证(相互认证)".

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

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


Ms2*_*ger 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和证书身份验证的服务进行身份验证.


Ner*_*kat 5

不推荐使用

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

资源