我记得看着<keygen>
和我从来不明白的一件事是如何将结果保存到客户端浏览器?据我了解,它会向您发送一个公钥,我应该签署一些内容并将其发送回客户。
但是,我要寄回什么?我是否签署了证书,如何告诉浏览器安装它,以便下次用户访问该站点时可以使用它?我不明白如何告诉它做那部分,每次我访问该页面时,这些示例似乎都忘记了我。
我记得看着<keygen>
和我从来不明白的一件事是如何将结果保存到客户端浏览器?据我了解,它会向您发送一个公钥,我应该签署一些内容并将其发送回客户。
但是,我要寄回什么?我是否签署了证书,如何告诉浏览器安装它,以便下次用户访问该站点时可以使用它?我不明白如何告诉它做那部分,每次我访问该页面时,这些示例似乎都忘记了我。
也许我误解了您的问题,但该<keygen>
元素是有目的地构建的,因此每次提交新表单时都会生成一个新的公钥/私钥对。私钥存储在本地密钥库中,公钥作为(AFAIK)Base64 编码字符串提交。
此表单元素对于 CA 使用适当的签名算法对客户端的证书进行签名非常有用。以 SSL 证书为例,它需要一些背景信息以及 RSA 公钥/私钥。在这种情况下,您可以让整个系统成为一个 Web 界面,将所有相关数据放在一个表单中供用户输入,而不是让用户使用离线工具自己生成证书请求。在这种情况下,证书“请求”可以简单地在服务器端构建,为客户端节省了很多麻烦。
返回的数据将取决于您使用密钥执行的操作。如果您正在签署客户的证书,那么您将根据他们提供的信息返回已签署客户的证书。当然,如果您使用此密钥执行其他任何操作,您可以选择要返回的内容。
请注意,该<keygen>
元素不用于在您(服务器)和客户端之间建立任何类型的安全通道。考虑这一点的最简单方法是,该<keygen>
元素的行为就像一个长文本区域,客户端在其中键入(或者更确切地说是复制)他们的公钥以供证书颁发者处理,只有整个密钥生成是自动化的。至于 SSL 证书,返回数据很可能是原始签名证书文件本身或包含证书数据的漂亮网页中的文本框,但这完全取决于您。
在此处阅读有关签署证书的更多信息。