0

在 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 很好,不会抛出任何错误。我究竟做错了什么?

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

提前致谢。

4

1 回答 1

0

在另一个问题在浏览器中生成客户端证书并在服务器上签名>在浏览器中生成客户端证书并在服务器上签名有一个答案,其中包含指向crosskeygen.js的链接和显示其工作原理的 HTML 模板HTML 模板。对我来说,这是一个很大的帮助。

于 2013-09-30T18:56:38.333 回答