我记得我在看<keygen>时,唯一不明白的是如何将结果保存到客户端浏览器中?据我所知,它会给你一个公钥,我应该签个字,然后把它寄回给客户。
但是,我要寄回什么?我是否要签署证书,如何告诉浏览器安装它,以便用户下次访问网站时使用它?我不知道如何告诉它去做那一部分,而且每次我访问页面时,这些例子似乎都会忘记我。

最佳答案

也许我误解了您的问题,但是<keygen>元素是特意构建的,这样每次提交新表单时都会生成新的公钥/私钥对。私钥存储在本地密钥库中,公钥作为(AFAIK)Base64编码字符串提交。
此表单元素对于使用适当的签名算法对客户端证书进行CAs签名非常有用。以需要一些背景信息和RSA公钥/私钥的SSL证书为例。在这种情况下,不需要让用户使用离线工具自己生成证书请求,而是可以将整个系统变成一个web界面,其中所有相关数据都放在一个表单中供用户输入。在这种情况下,证书“请求”可以简单地构建在服务器端,从而为客户端节省了许多麻烦。
返回的数据将取决于您对密钥所做的操作。如果您正在签署客户端的证书,那么您将根据他们提供的信息返回已签署的客户端证书。当然,如果你用这把钥匙做任何其他事情,你可以选择你想返回的东西。
请注意,<keygen>元素不用于在您(服务器)和客户端之间建立任何类型的安全通道。考虑这一点最简单的方法是,<keygen>元素的行为就像一个长文本区域,在这个区域中,客户机键入(或者更确切地说复制)它们的公钥以供证书颁发者处理,只有整个密钥生成是自动的。至于SSL证书,返回的数据很可能是原始的签名证书文件本身,也可能是一个包含证书数据的文本框,放在一个漂亮的网页中,但这完全取决于您。
阅读有关签署证书here的更多信息。

10-08 15:25