我在一些正在处理的项目上过期客户端证书时遇到了一些麻烦,在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对它没问题并且没有错误。我究竟做错了什么?
如果需要更多信息,请发表评论。
提前致谢。
答案 0 :(得分:0)
在另一个问题中在浏览器中生成客户端证书并在服务器上签名“>在浏览器中生成客户端证书并在服务器上签名有一个带有crosskeygen.js链接的答案和HTML模板{{3这表明它是如何工作的。 对我来说这是一个很大的帮助。