使用HTML5 <keygen />标记创建SSL客户端证书

时间:2013-06-19 14:01:00

标签: html5 firefox openssl

我在一些正在处理的项目上过期客户端证书时遇到了一些麻烦,在Firefox 21及以下版本中出现。

环境:有客户端PC,每个客户端都有一个客户端证书。这些客户端证书是使用PKCS12文件格式安装的,并设置了导出密码。客户端正在调用域名为“a.somedomain.net”的站点,每个服务器请求都将“b.somedomain.net”作为目标。证书对'* .somedomain.net'有效。到目前为止,这么好,一切都很好。

现在它们已经过期了,所以我想要一些更新机制来执行安静,无需用户操作的证书更新。我正在检查$ _SERVER ['SSL_CLIENT_V_REMAIN']变量并在剩余天数低于预定义值时执行更新。这也有效。

如果需要更新,我正在做一些http重定向到位于“b.somedomain.net”的脚本。该表单包括HTML5浏览器创建公钥/私钥对以及将公钥发送到表单操作URL所需的所有DN数据。这也有效。

现在,服务器通过OpenSSL / PHP对证书进行签名,并返回带有正确标头的证书,以供浏览器识别。但是FF告诉我“这个个人证书无法安装,因为你没有拥有在申请证书时创建的相应私钥。”

私钥留在FF门后面,我只从FF获取公钥,OpenSSL对它没问题并且没有错误。我究竟做错了什么?

如果需要更多信息,请发表评论。

提前致谢。

1 个答案:

答案 0 :(得分:0)

在另一个问题中在浏览器中生成客户端证书并在服务器上签名“&gt;在浏览器中生成客户端证书并在服务器上签名有一个带有crosskeygen.js链接的答案和HTML模板{{3这表明它是如何工作的。 对我来说这是一个很大的帮助。