在 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 很好,不会抛出任何错误。我究竟做错了什么?
如果需要更多信息,请发表评论。
提前致谢。