我可以使用 apache mod_ssl 通过他的客户端证书授权用户。 现在我需要请求用户用他的客户端证书签署一些字符串并在我的 php 脚本中读取这个标志。 当我在服务器上有 key.pem 但客户端证书在客户端计算机上,安装在浏览器中时,我知道如何使用 openssl_sign 来做到这一点
最佳答案
的确,客户端的私钥(对应客户端证书)就是用来签名的,是不会离开浏览器的。您需要在客户端的浏览器中执行这些操作,而不是在 PHP(服务器)端。
不幸的是,没有跨浏览器进行加密操作(和访问私钥)的通用方法。
您可以从以下内容着手:https://developer.mozilla.org/en/JavaScript_crypto#Signing_text
或者,您可以尝试从浏览器启动应用程序(例如 Java WebStart),尽管这不一定能轻松访问浏览器中的私钥和证书。
关于php - 请求用户通过客户端证书对字符串进行签名并在 PHP 中获取此签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3848515/